Activity启动模式
来源:互联网 发布:国家药品数据库下载 编辑:程序博客网 时间:2024/06/06 03:12
学习了徐宜生的《Android群英会》一书总结出,大家可以去买书,非常值得一看
Activity与Activity调用栈分析
Android任务栈简介
当一个App启动时,如果当前环境中不存在该APP的任务栈,那么系统就会创建一个任务栈。以后这个APP所启动的Activity都将在这个任务战中被管理,这个栈也被称为一个Task,即表示若干个Activity的集合,他们组合在一起形成一个Task。
*特别注意:
一个Task中的Activity可以来自不同的APP,
同一个APP的Activity也可能不在一个Task中。*
新启动的Activity就会置于任务栈的顶端,并处于活动状态,而启动了另一个Activity的时候,新启动的Activity虽然功成身退,但依然保留在任务栈中,处于停止状态,当用户按下返回键或者调用finish()方法时,系统会溢出顶部Activity,让后面的activity恢复
AndroidMainifest启动模式
在AndroidMainifest文件中一共涉及了四种启动模式:
- standard
- singleTop
- singleTask
- singleInstance
standard
默认的启动模式,如果不指定Activity的启动模式,默认采用此方式。
这种模式每次都会创建新的实例,每次点击standard模式创建Activity后,都会创建新的MianActivity覆盖在原Activity上。
singleTop
系统会判断当前栈顶Activity是不是要启动的Activity,如果是则不创建新的Activity而是直接引用这个Activity;如果不是则创建新的Activity。
这种模式虽然不会创建新的实例,但是系统仍然会在Activity启动时调用onNewIntent()方法。
singleTask
与singleTop类似,只不过singleTop是检测栈顶元素是否是需要启动的Activity,而singleTask是检测整个栈中是否存在需要启动的Activity。如果存在,则将该Activity置于栈顶,并将该Activity以上的Activity都销毁。
不过这里是指在同一个App中启动这个singleTask的Activity,如果是其他程序以singleTask模式来启动这个Activity,那么它将创建一个新的任务栈。不过这里有一点需要注意的是,如果启动的模式为singleTask的Activity已经在后台一个任务栈中了,那么启动后,后台的这个任务栈将一起被切换到前台
当Activity2启动ActivityY(启动模式为singleTask)时,它所在的Task都被切换到前台,且按返回键返回时,也会先返回ActivityY所在的Task的Activity也就是ActivityX。
可以通过这种方式实现退出整个应用:将主Activity设置成singleTask模式,在要退出的Activity中转到主Activity,从而将主Activity之上的Activity全部清除,然后重写Activity的onNewIntent()方法,在该方法中加上一个finish();将最后一个Activity也结束掉,这样程序就完全退出了。
singleInstance
singleInstance这种启动模式和使用的浏览器工作原理类似。在多个程序中访问浏览器时,如果当前浏览器没有打开,则打开浏览器,否则会在当前打开的浏览器中访问。
申明为singleInstance的Activity会出现在一个新的任务栈中,而且该任务栈中只存在这一个Activity。例子:如果应用A的任务栈中创建了MainActivity实例,且启动模式为singleInstance,如果应用B也想激活MainActivity,则不需要创建,两个应用共享该Activity的实例。这种启动模式常用于需要与程序分离额界面,如在SetupWizard中调用紧急呼叫。
如果在一个singleTop或者singleInstance的ActivityA中通过startActivityForResult()方法来启动另一个ActivityB,那么系统将直接返回Activity.RESULT_CANCELED而不会再去等待返回。这是由于系统在Framwork层做了对这两种启动模式的限制,因为Android 开发者认为,不同的Task之间,默认是不能传递数据的,如果一定要传,那就只能通过intent来绑定数据。
- android Activity启动模式
- Android Activity启动模式
- activity启动模式详解
- Activity启动模式1
- activity的启动模式
- Activity有四种启动模式
- Activity启动模式
- activity启动模式分析
- Activity的启动模式
- Activity 启动模式
- Activity启动模式
- Activity的启动模式
- Activity 启动模式
- Activity启动模式总结
- Activity的启动模式
- Activity的启动模式
- Activity 启动模式
- Activity启动模式
- linux下软件的安装
- Android 中this、 getApplicationContext()、getApplication()之间的区别
- WIN7 64位 没有ACCESS驱动的问题
- iOS备忘录之IOS开发的一些网站(看看还是不错的)
- python+opencv实操-图像基本操作
- Activity启动模式
- css3 @media 用法
- Android 5.0 权限管理, apk安装失败
- Hive--自定义函数
- ffmpeg重要结构体之AVCodec
- boost regex 笔记
- 基于cydia Hook在线热修复补丁方案
- FriendlyARM Tiny210开发板硬件基础 第二篇--汇编调用c语言
- Android如何调用第三方SO库