安卓Activity启动模式

来源:互联网 发布:风险评估软件有哪些 编辑:程序博客网 时间:2024/06/11 17:40

根据Activity的不同的启动模式,它在BackStack中的状态是不一样的。Activity可以通过AndroidManifest.xml清单文件配置,在节点中的android:launchMode属性设置。它有四个选项:

  • standard
  • singleTop
  • singleTask
  • singleInstance

standard

  标准启动模式,也是默认启动模式,如果不设置android:launchMode属性的话。standard模式下的Activity会依照启动的顺序压入BackStack中。(两个相同的Activity可以被压入Stack两次,分别是@1@2,待研究)

    应用场景:普通Activity

singleTop

  单顶模式,这种Activity启动模式,启动一个Activity的时候如果发现BackStack的栈顶已经存在这个Activity了,就不会去重新创建新的Activity,而是复用这个栈顶已经存在的Activity,避免同一个Activity被重复开启。

    应用场景:适用于可以复用而又有多个开启渠道的Activity

singleTask

  开启一个Activity的时候,检查BackStack里面是否有这个Activity的实例存在,如果存在的话,结束BackStack里这个Activity上所有的其他Activity。也就是说在该Activity之后压入栈的Activity都会被pop出去。

    应用场景:对于不适合创建多个的很耗费系统资源的Activity

singleInstance

  被标记为singleInstance启动模式的Activity,在启动的时候,会开启一个新的BackStack,这个BackStack里只有一个Activity的实例存在,并且把这个BackStack获得焦点。这是一种很极端的模式,它会导致整个设备的操作系统里,只会存在一个这个Activity示例,无论是从何处被启动的。

    应用场景:整个设备的操作系统里,只存在一个这个Activity实例,无论是从何处被启动的。安卓系统的来电界面(InCallActivity.java)用的就是这种启动方式。
原创粉丝点击