其实 Android 是使用任务(Task)来管理活动的,一个任务就是一组存放在栈里的活动
的集合,这个栈也被称作返回栈(Back Stack) 。栈是一种后进先出的数据结构,在默认情况
下,每当我们启动了一个新的活动,它会在返回栈中入栈,并处于栈顶的位置。

1、android:launchMode=”standard”
标准启动模式。这种启动模式也是Activity默认的,一个栈中可以有多个相同的Activity。不会考虑是否栈中是否有相同的Activity。比如设置A为standard模式,那么可以运行A-B-A-A-A;

2、android:launchMode=”singleTop”
单一栈顶启动模式,栈顶只能存在一个相同的Activity。比如你栈顶是MainActivity.java,你想启动新的MainACtivity.java是无法实现的。但是栈中可以存在多个MainActivity.java。 比如设置A为singleTop模式,运行 A-B-A 这里栈中可以同时存在了两个A,但是不能在A之上再启动一个A。

3、android:launchMode=”singleTask”
单一栈启动模式,当使用这种启动模式的时候,栈中只能存在一个相同的Activity。比如设置A为singleTask模式,那么执行
A-B-C-D ,此时D在栈顶,你想启动一个A,此时会直接启动在栈底层的A,而不会去新建一个A。并且此时A已经成为了栈顶了,所以C和D都是被移出栈,也就是被销毁了。

4、android:launchMode=”singleInstance”
单例启动模式,这种启动模式比较复杂一点。表明这种启动方式的Activity被启动时候,会存在新的返回栈中。比如设置B为这种模式,
那么当A-B-C-D,(此时D在栈顶)此时原始的栈中就有A、C、D这三个Activity,而B在一个新的栈中。此时当你按back键,你会发现是这样子的,D-C-A-B,这是因为DCA在先创建的(也就是主栈)中,所以当主栈中的Activity全部都移除栈外后, 才会轮到次栈,这个次栈中只有一个B。把Activity独立于一个栈中,是为了别的程序访问此Activity,可以方便多个应用程序共享这个栈中的Activity。

更多相关文章

  1. No.11 使用firewall配置的防火墙策略的生效模式
  2. Android基础之Activity四种启动模式
  3. 自定义toast你需要的都在这里,单例模式,自定义布局,完全自定义,
  4. Android(安卓)ApiDemos示例解析(17):App->Activity->Translucent
  5. 安卓签名证书创建
  6. GPS启动分析
  7. UiModeManager设置夜间模式和行车模式
  8. Android(安卓)夜间模式的设置以及需要注意的地方
  9. Android(安卓)类加载模式

随机推荐

  1. Android中的控件
  2. 谷歌发布 Android(安卓)2.2:运行速度提高2
  3. Android的Socket通信编程实例
  4. Android事件分发机制完全解析,带你从源码
  5. Android的事件简介
  6. Android(安卓)UI【android 仿微信、QQ聊
  7. Android中View和ViewGroup介绍
  8. 一个初级程序员要学会的东西
  9. [置顶] [Android基础]Android中ListView详
  10. Android(安卓)XmlPullParser工具解析