Android理解四种启动模式
来源:互联网 发布:警方提醒 防网络诈骗 编辑:程序博客网 时间:2024/05/16 13:53
前言
涉及到Android启动模式的知识,首先要提一下 任务栈。它是一种后进先出的线性存储数据结构。它仅允许在表的一端进行插入和删除运算。这一端被称为栈顶,相对地,把另一端称为栈底。向一个栈插入新元素又称作进栈、入栈或压栈,它是把新元素放到栈顶元素的上面,使之成为新的栈顶元素;从一个栈删除元素又称作出栈或退栈,它是把栈顶元素删除掉,使其相邻的元素成为新的栈顶元素。
1.standar :俗称标准启动模式,也是Android系统默认情况下的启动模式。这种模式完全按照启动了多少个Activity,就往栈内压栈多少个Activity对象。出栈时则倒叙一次出栈。举个例子, 有ActivityA 、 ActivityB 、ActivityC : 假设开启ActivityA、接着开启ActivityB、然后是ActivityC。它们会依次往进入任务栈的栈顶, 那么现在栈里从栈底到栈顶 的顺序依次是ActivityA、ActivityB、ActivityC。然后在出栈的时候,假设按照一次Back键, ActivityC出栈,再按一次Back键,则ActivityB出栈,最后栈里只剩下ActivityA,再按一次Back则完全出栈,应用退出。
2.singleTop:俗称顶部只有一个启动模式。这种模式在standar模式下加入限制。 限制:当有新的Activity对象压栈时,会先检测一下栈顶是否已存在该Activity的实例,如果有这不会创建一个新的Activity对象加入, 如果没有才会创建。
应用:假设一个界面为了避免短时间内被开启很多次,则可以使用singleTop。
3.singleTask:单一任务栈模式:在任务栈里只可以存在一个同一Activity实例。另外还有一个,假设ActivityA要压栈了, 但是检测到栈里已经存在ActivityA的实例了,此时,该栈会清楚从ActivityA实例到栈顶所有的Activity实例清楚掉,最终,在栈顶只留下一个ActivityA对象。
应用:当Activity实例占用内存开销比较大,那么久该考虑下该Activity的启动模式设置为singleTask了。例如含有wenview的activity内存开销就比较大。
4.singleInstance:单一栈实例模式。
有必要和前面三种启动模式区别下:前面三种启动模式的所有压栈出栈行为都发生在同一个任务栈中。在singleInstance启动模式下,Activity单独开辟了单独任务栈来操作它的实例。
应用:跟3的应用场景没什么两样,都是保持单独实例。 只不过它们的工作模式有区分。 singleinstance常用场景:系统接听电话界面的启动。
- Android理解四种启动模式
- 深刻理解activity启动模式,彻底理解android的四种启动模式,尤其singleTask
- [原]深刻理解activity启动模式,彻底理解android的四种启动模式,尤其singleTask
- Android的四种启动模式-----深入理解
- android中的四种启动模式-图文并茂更好理解
- Android四种启动模式
- android 四种启动模式
- android四种启动模式
- android 四种启动模式
- android四种启动模式
- Android 四种启动模式
- android四种启动模式
- Android四种启动模式
- Android四种启动模式
- Android 四种启动模式
- Android四种启动模式
- Android四种启动模式
- Android四种启动模式
- MongoDB java 3.2版本查询指定列和排序的补充
- 数据一致性-分区可用性-性能
- 大型分布式网站架构技术总结
- 4145: [AMPPZ2014]The Prices 状压DP
- [QT]qdebug的使用方法 或者说 使用格式
- Android理解四种启动模式
- 一步一步教你使用.net进行Socket通信
- 九、UiWatcher API 详细介绍
- UVA 10410(p180)----Tree Reconstruction
- hdu 2639 Bone Collector II
- idea 更换编辑器背景图片
- 如何成为一名优秀的全栈工程师
- iOS 中 cell和 label 的自适应高度
- android开发小感