Activity的运行模式简单介绍
来源:互联网 发布:断食减肥知乎 编辑:程序博客网 时间:2024/06/06 01:50
在android的多activity开发中,activity之间的跳转可能需要有多种方式,有时是普通的生成一个新实例,有时希望跳转到原来某个activity实例,而不是生成大量的重复的activity。加载模式便是决定以哪种方式启动一个跳转到原来某个Activity实例。
在android里,有4种activity的运行模式,分别为:(standard、singleTop、singleTask和singleInstance)
standard: 标准模式,一调用startActivity()方法就会产生一个新的实例。
singleTop: 来了intent, 每次都创建新的实例,仅一个例外:当栈顶的activity 恰恰就是该activity的实例(即需要创建的实例)时,不再创建新实例。这解决了栈顶复用问题
singleTask: 来了intent后,检查栈中是否存在该activity的实例,如果存在就把intent发送给它,否则就创建一个新的该activity的实例,放入一个新的task栈的栈底。肯定位于一个task的栈底,而且栈中只能有它一个该activity实例,但允许其他activity加入该栈。解决了在一个task中共享一个activity。
singleInstance: 这个跟singleTask基本上是一样,只有一个区别:在这个模式下的Activity实例所处的task中,只能有这个activity实例,不能有其他的实例。一旦该模式的activity的实例已经存在于某个栈中,任何应用在激活该activity时都会重用该栈中的实例,解决了多个task共享一个activity。
这些启动模式可以在功能清单文件AndroidManifest.xml中进行设置,中的launchMode属性。
下面做个测试,有三个Activity之间的跳转:ActivityA 、ActivityB、 activityC。
A------>B------>C------>B------>C------>B;
standard的返回顺序为:B------>C------>B------>C------>B------>A------>launch;
singleTop的返回顺序: B------>C------>B------>C------>B------>A------>launch;
singleTask的返回顺序:B------>A------>launch;
singleInstance的返回顺序:B------>C------>A------>launch;
但是standard和singleTop有一点区别:
例:A------>B------>C------>C------>C;
standard的返回顺序为:C------>C------>C------>B------>A------>launch;
singleTop的返回顺序:C------>B------>A------>launch;方便查看 :-)
- Activity的运行模式简单介绍
- Activity生命周期的简单介绍
- Activity的运行状态简要介绍
- Activity的四种运行模式
- Android Activity四种启动模式简单介绍,学习记录。
- Activity的启动模式详细介绍
- Activity的几种启动模式介绍
- Activity的介绍与启动模式
- MVC模式的简单介绍:
- Activity启动模式介绍
- Activity启动模式介绍
- spark 运行模式的简单总结
- Activity 切换运行模式后的意外情况
- 第一篇 Activity的运行模式(TaskStack和LaunchMode)
- Activity.runOnUiThread(Runnable)简单介绍
- 永无止步_简单介绍Activity的生命周期
- Android:lunchmode(Activity的四种启动模式介绍)
- Activity的几种加载启动模式介绍
- 安装windows后,找回ubuntu
- 七夕,染红了我的相思
- Informix存储过程 详解
- ubuntu SSH Secure Shell Client 中文乱码
- Xcode4.5.1破解iOS免证书开发真机调试与ipa发布
- Activity的运行模式简单介绍
- bacula之内存池实现
- 为什么要选择PHP开发网站,PHP有什么优势?
- 关于RTP打包h264的时间戳要注意的问题
- 在SQLite中使用事务
- flex DataGrid与CheckBox的使用,表头也加上CheckBox
- C#中如何快速地将一个表(datatable)的内容复制给另一个表
- Spket在Eclipse/MyEclipse下的安装和配置
- android相关知识简介