在AndroidMainfest.xml文件配置activity节点时,可以指定Activity的启动模式属性,android:launchModel 属性 ,可以指定四种启动模式:

中文名字是我自己根据他的特称和理解定义的。


分别是:standard  基本启动模式  (默认)

singleTop 栈顶单例启动模式 

singleTask 任务单例启动模式

singleInstace 单实例启动模式

Standard:

应用程序中,每启动一个活动,都会在返回栈顶。如果我们为FirstActivity 创建一个按钮,通过Intend启动一个FirstActivity 程序会为我们创建新的Activity 放入栈顶,如图所示。 这种启动模式是默认的。

singleTop

如果在AndroidMainfest.xml 中的FirstActivity android:launchModel指定为singleTop,这时在上一个测试中,由于FirstActivity处于栈顶的位置,程序就不会创建一个新的Activity 。   如果进入了一个SecondActivity ,当SecondActivity处于栈顶的时候,在SecondActivity中通过Intent启动FirstActivity时 ,由于FirstActivity 并未处于栈顶,则会创建一个新的Activity 如图



活动处于栈顶的时候,就是单例的。如果活动并未处于栈顶,则就要像standard一样 创建一个新的Activity。正如名字singleTop一样。


singleTask:

会想到,如果要是整个任务中的几个活动都不能重复,该如何设定,sinleTask就是这么一种模式,在启动活动的时候,系统会检查返回栈中的活动实例是否已经存在,如果存在,那个实例上的活动全部弹栈,启动那个活动,不会创建一个新的活动。

如图:

个SingleTask名字让我有些疑惑,Task是一些活动的集合,那么一个程序中会有多个Task么,根据我自身的基本意识,觉得程序当中肯定会有多个Task。但是这个模式又是说程序会检查整个返回栈中是否有重复,那么这个名字是否应该定义成singleStack呢。 有些疑惑,初学。


singleInstance

活动是可以被多个应用程序共享,当其他应用程序需要调用本应用程序中的活动的时候,就可以将Activity设置为共享Activity 为这个Activity 单独的创建一个返回栈。这个返回栈是多个应用程序共享的。我们可以通过getTaskId()方法得到当前的返回栈的ID,就可以去区分当前的Activiyt所在的栈是哪个。


上图:











参考图书:

《第一行代码》 人民邮电出版社







更多相关文章

  1. Android学习 之 活动与任务
  2. onStartCommand 的返回值
  3. 高通msm8994启动流程简介
  4. 安卓启动流程
  5. Task和Activity相关
  6. Android(安卓)开发艺术探索笔记(18)
  7. Android(安卓)Service 详解(上)
  8. Android的Activity的启动流程分析
  9. Android(安卓)源码解析之Adapter和AdapterView与适配器模式

随机推荐

  1. Android(安卓)从uri中获取路径
  2. Android隐藏输入法软键盘的注意事项
  3. android maven 签名
  4. Grade 编译 Android(安卓)解决 Error:mor
  5. 2011.08.12(3)——— android AudioTrack
  6. 2011.08.12(3)——— android AudioTrack
  7. android 反编译入门
  8. 从android 里面读取配置文件
  9. Android(安卓)文件存储的简单实现
  10. Android曲线绘制demo