前言

涉及到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常用场景:系统接听电话界面的启动。




更多相关文章

  1. State 状态模式在 Android(安卓)多弹窗的应用
  2. Android之“观察者模式”解析及实际应用:"应用宝"软件下载中 进度
  3. Android中style和theme巧用:Android应用程序启动时背景画面的切
  4. 关于Android的Sensor驱动,不支持内核模块模式的驱动
  5. 【设计模式二之Builder模式】设计模式的Builder模式[结合使用And
  6. Android(安卓)mp3音乐播放器实例-----概述
  7. android插件开发-就是你了!启动吧!插件的activity(一)
  8. android没有告诉你的usr模式和eng模式的区别
  9. Android实现记事本项目完整实例,附源代码

随机推荐

  1. Android安装步骤
  2. Android:视频(VideoView/MediaPlayer)
  3. Android(安卓)native C 程序中输出LOG信
  4. Android中的sqlite事务操作
  5. Android(安卓)ContentProvider 注意事项
  6. android基础:broadcast广播简单实例
  7. Android(安卓)开发中使用SAX解析xml小结
  8. android.intent.category以及android.int
  9. 滚动视图(ScrollView、HorizontalScrollVi
  10. Android将base64编码转化成图片