四种清单中 launchMode(启动模式)解释

其实 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。

你可能感兴趣的:(android)