总是看到Activity的四种启动模式:Standard,SingleTask,SingleTop,SingleInstance,而且都是借助于官方文档理解的。但是最近在写Demo测试这几种启动模式的特点与区别的时候,发现与官方文档有不一致的地方。本篇文章主要讲解的是SingleTask这种LaunchMode。
介绍 Android 启动模式之前,先介绍两个概念task和taskAffinity
下面是Activity类与生命周期有关的方法: onCreate : 创建页面 onStart : 开始页面 onStop : 停止页面 onResume : 恢复页面 onPause : 暂停页面 onDestroy : 销毁页面 onRestart : 重启页面 onNewIntent : 重用栈中已存在的实例 onSaveInstanceState : 保存实例状态。使用场景:1、从A视图跳转到B视图,需要保存A视图的状态(不考虑特殊情况);2、屏幕从竖屏变为横屏,需要保存竖屏时的视图状态,从横屏变为竖屏亦然;3、当前Activity处于后台,系统因资源紧张将其杀死。 onRestoreInstanceState : 恢复实例状态。使用场景:1、屏幕从竖屏变为横屏,横屏显示时需要恢复之前保存的竖屏状态;2、activity后台运行被系统杀死。此处注意,从B视图返回A视图时并不调用该方法。 最简单的页面启动顺序:onCreate->onStart->onResume 最简单的页面退出顺序:onPause->onStop->onDestroy
在Android程序中,应用程序通过活动栈来管理Activity,活动栈中有多少个Activity对象,我们在退出程序的时候就要按多少下返回键(即要将活动栈中的所有Activity出栈),但是这样的话难免会有活动栈中存在相同的Activity对象,那么我们该如何解决这个问题呢。
2021-04-04 22:45:03.650 17626-17626/com.example.myfirstapp I/System.out: MainActivity Create. Task Id: 43112 2021-04-04 22:45:14.365 17626-17626/com.example.myfirstapp I/System.out: SingleTaskActivity Create. Task Id: 43112 2021-04-04 22:45:14.803 17626-17626/com.example.myfirstapp I/System.out: MainActivity Stop. Task Id: 43112
用户希望应用能够快速打开。启动时间过长的应用不能满足这个期望,并且可能会令用户失望。轻则鄙视你,重则直接卸载你的应用。
大家好,我是 Vic,今天给大家带来Android开发工程师文集-Activity生命周期,启动方式,Intent相关介绍,Activity详细讲解的概述,希望你们喜欢
Activity的四种启动模式主要有standard、singleTop、singleTask、singleInstance四种。不同的启动模式对该Activity有着不同的启动方式,对应AndroidManifest中的android:launchMode属性。
Android 中的 Activity 是可以层叠的。我们每次启动一个新的 Activity,就会覆盖在原来的 Activity 上面,然后点击 back 键就会销毁最上面的 Activity,下面的 Activity 就会重新显示出来。
本文实例分析了Android Activity启动模式之singleTask。分享给大家供大家参考,具体如下:
Android 系统用栈的形式管理 Activity , 当新的 Activity 被创建是, 会被放置到栈顶, 这个 Activity 会进入到运行状态, 而前一个 Activity 则会被压入栈, 直到新的 Activity 退出, 否则不会出现在前台。
在测试Activity的启动过程中,测试Intent.FLAG_ACTIVITY_CLEAR_TOP以及SingleTask的过程中发现这两者有一些区别。
以下几种情况下,Activity的生命周期会发生异常 1,资源相关的系统配置发生改变 比如,旋转屏幕,在默认状态下,Activity就会被销毁并且重新创建。
如果一个活动失去了焦点,但仍然可见(也就是说,一个新的非全尺寸或透明的活动将焦点放在了活动的顶部),那么它将被暂停。暂停的活动是完全活动的(它维护所有状态和成员信息,并保持与窗口管理器的连接),但是在内存极低的情况下,系统可能会终止它。
背景 目前有一部分android APP需要这样一种场景,即应用需要保留一个应用首页主Activity,其它子Activity永远在主Activity之上,跳转到子Activity之后,不管以哪种方式跳转,最终都可以返回到主Activity,这种场景有点类似主桌面的概念。这种场景如果纯fragment来实现,需要管理fragment栈,中间如果发生嵌套跳转,fragment栈的管理会变得非常复杂,所以难免会需要使用部分Activity来实现,并且由于主Activity承载的内容比较丰富,初始化会比较耗时,因
在android应用程序中,最重要的组件之一Activity有4种启动模式,其中singleTask根据官方文档的描述很容易让人迷惑,主要是启动后所处的Task易让人困惑,其实原因在于,activity的启动方式除了受标签android:launchMode的影响之外,还会被启动参数所左右,比如intent的标志位FLAG_ACTIVITY_NEW_TASK,任务标签 android:taskAffinity。本文主要对singleTask和这些影响影响因素进行测试。
体验活动生命周期 主活动:MainActivity, 子活动:NormalActivity和DialogActivity。 两个子活动分别加入一个TextView, 然后在AndroidManifest.xml内配置DialogActivity的主题。
APP启动速度非常重要,APP启动速度慢,可能会造成用户体验不良好,尤其是在最近用Android studio之后,如果长时间不打开app,启动速度就会特别的慢,下面我们一起探讨一下影响app启动速度的原因,以及解决方案。
Task是一些Activity的集合,以Activity栈的形式存放。因此,Task是概念上的,Activity栈是实体上的。
android的通知栏消息点击事件如果是打开一个activity时,我们要考虑两种情况:
前面说到用Intent来拨打电话和发送短信,主要是介绍了Intent的一些简单方法,这里Intent启动了另一个Activity,在之前的内容都是在一个Activity中进行操作的。但是在实际应用中,我们会有很多个Activity,如何从一个Activity跳到其他的Activity,这时就需要用到Intent了,既然有多个Activity,那么我们就要创建另一个Activity文件,如:HongtenActivity.java
在实际项目中我们应该根据特定需求为每个活动指定恰当的启动模式, 启动模式一共有4种,standard,singleTop,singleTask,singleInstance,可以在AndroidManifest.xml中通过标签指定android:launchMode属性来选择启动模式。 standard standard是活动默认的启动模式,在standard模式下,每当启动一个新的活动,他就会在返回栈中入栈,并处于栈顶位置,对于使用standard模式的活动,系统不会在乎这个活动是否已经在返回栈中存在,每次启动活动都会创建该活动的一个新的实例。
1 . 问题描述 : Android 应用启动时 , 尤其是大型复杂的应用 , 经常出现几秒钟的白屏或黑屏 , 黑屏或白屏取决于主界面 Activity 的主题风格 ;
Week05 2016/10/13上午1-4节 一、复习 1、见Lesson07 《Android》Lesson07 - 简书 2、补充 如何调用android系统自带的一些方法(转载) - 简书 二、Activity的生命周期 1、onCreate(Bundle savedInstanceState) {}//第1个执行的方法,而且只执行1次:写初始化的语句 2、onStart() {}//Activity由不可见变为可见的时候调用,转到对话框无onStart,语句:资源加载 3、onResum
在学习安卓的最初过程中我们学的都是最基本的一个活动,只有一个活动的应用也太简单了吧,没错我们的最求应该更高点,不管你创建多少个活动,接下里我们介绍的这种方法能解决我们在创建活动之间的跳转.
本文将对Android开发中的Activity&Fragment生命周期进行全面解析
前面两期我们学习了Activity的创建和注册、以及启动和关闭,也学会了重写onCraete方法,这些知识在实际开发中远远不够,还需要学习了解更多。 生命周期就是一个对象从创建到销毁的过程,每一个对象都有自己的生命周期。同样, Activity也具有相应的生命周期。 一、Activity状态 一个Android应用程序往往包含多个Activity,当Activity处于Android应用中运行时,每个Activity的状态都不一样。Activity的活动状态由Android以Act
//1.首先创建一个Service /////MainActivity 在MainActivity中启动服务 //启动服务 findViewById(R.id.btnStartService).setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { startService(new Intent(MainActivity.this, MyService.class)); } }); 在MainActivity中停止服务 //停止服务 findViewById(R.id.btnStopService).setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { stopService(new Intent(MainActivity.this,MyService.class)); } }); ///////// —-MyService //重写onStartCommand方法
本文介绍了浅谈android性能优化之启动过程(冷启动和热启动) ,分享给大家,具体如下:
原创地址:http://blog.csdn.net/zivensonice/article/details/51569502
应用的启动速度缓慢是我们在开发过程中经常会遇到的问题,比如启动缓慢导致的黑屏,白屏问题,本篇博客就将介绍App启动优化的相关知识。
一个Android项目程序一定会存在多个 Activity ,在Activity对象的切换过程中,难免会有一些Activity对象被系统回收,那么,这个Activity中的数据也会消失,打个比方:一个Activity中存在一个EditText输入框,输入到一半的时候跳出另一个界面,而不巧的是这个存在EditText的界面刚好被系统回收了。那么再次启动这个Activity的时候EditText的数据又得重新输入,这是极大的影响用户的体验的。那么我们该如何解决这个问题呢。
首先分四部曲简单做一下说明 1.What(是什么):Intent类中的一个静态标志属性
最近又开始学习Android studio 了,在制作APP时,都有一个启动的界面,看上去美观且实用(也可以作为以后的广告位←
Flutter可以以源代码或AAR的方法嵌入到Android原生项目,集成流程可以使用 Android Studio 完成,也可以手动完成。强烈建议使用 Android Studio。
活动的:Activity 在栈顶,它是可视、有焦点、可接受用户输入的。Android 试图尽最大可能保持它活动状态,杀死其它 Activity 来确保当前活动 Activity 有足够的资源可使用。 当另外一个 Activity 被激活,这个将会被暂停。
当一个活动位于返回栈的栈顶时,这时活动就处于运行状态。系统最不愿意回收的就是处于运行状态的活动,因为这会带来非常差的用户体验。
android中经常会遇到从当前的Activity跳转到另外一个Activity的情况,通常情况下我们会直接选择用startActivity或者startActivityForResult。如果你对这两个方法还不知道的话可以去https://www.cnblogs.com/fuck1/p/5456337.html看看。本文不会告诉你怎么使用这个方法,而是会说说笔者自己遇到的问题以及解决办法。 事情的起因是我在项目中遇到这样一个问题就是要求从下一个界面传数据回来,当时第一反应是用startActivityForResult解决,当我把代码敲完过后一测试,我擦咧,结果没回来。我以为是我代码写错了(这段代码很简单怎么可能会错)最后找到答案是因为Activity的启动模式被这只成了singleTask。好吧,这个有点坑自己了。于是我就自己测试了四种不同模式下启动模式对该方法的影响,(如果你对Activity的四种启动模式还不是很了解可以到https://blog.csdn.net/qq994467433/article/details/83350698看看)结果还真的挺有意思的。话不多说上代码。
上一期我们学习了Activity的创建和配置,当时留了一个悬念,如何才能在默认启动的Activity中打开其他新建的Activity呢?那么本期一起来学习如何启动和关闭Activity。 一、概述 经过前面内容的学习,知道一个Android应用通常都会包含多个Activity,但只有一个Activity 会作为程序的入口——当该Android应用运行时将会自动启动并执行该Activity。至于应用中的其他Activity,通常都由入口 Activity启动,或由入口 Activity启动的
打开APP的时候会有一个启动过程 ,为了较好的体验,一般加载一个启用页(有的是广告······)。 最熟悉的打开微信时候一个地球图片,这篇文章简单介绍怎么加载该图片。
Hi,新的征程开始啦,关于各种控件我们给大家介绍的已经差不多了,各位花粉已经陪伴着我们走过了一个阶段,本篇就是我们新征程的开始,当然,我们会在新征程之中偶尔穿插一些实战控件的使用,让大家学习的内容不再单一,还在等什么,紧跟我们的步伐,为了白富...理想而出发!!
本文章中所有内容仅供学习交流使用,不用于其他任何目的,不提供完整代码,抓包内容、敏感网址、数据接口等均已做脱敏处理,严禁用于商业用途和非法用途,否则由此产生的一切后果均与作者无关!
上一节学习了通过Intent去启动另外一个Activity。 本节学习通过Intent传值。
在Android 程序之中,Activity 对象时和用户交互的唯一手段,几乎每个 Android 项目程序都有多个 Activity。因此,灵活的在屏幕上切换 Activity 尤为重要。下面让我们一起来看一下如何用 Intent 来启动 Activity 对象吧
在上一篇文章中我介绍了使用Intent显式来实现页面向下跳转,接下来这篇文章主要介绍的是使用Intent隐式来实现向上跳转,什么意思呢,就是当我们从第一个页面跳转到第二个页面的时候我们可以从第二个页面跳转回去.
Android应用运行在后台的时候,经常被系统的LowMemoryKiller杀掉,当用户再次点击icon或者从最近的任务列表启动的时候,进程会被重建,并且恢复被杀之前的现场。什么意思呢?假如APP在被杀之前的Activity堆栈是这样的,A<B<C,C位于最上层
在Android中,如果我们要通过一个Activity来启动另一个Activity,可以使用 startActivity(Intent intent)方法来传入一个Intent对象,这个Intent对象我们可以精确的指定我们需要跳转的Activity上,或者通过Intent对象来 指定我们要完成的一个action操作。
当我们按BACK键时,我们这个应用程序将结束,这时候我们将先后调用onPause()->onStop()->onDestory()三个方法。
领取专属 10元无门槛券
手把手带您无忧上云