Android四大组件之Activity的四种启动模式

一个应用中可能有多个界面 那么每个界面展示的次序不同,创建的先后顺序不同,存储界面的内存方式也不同,我们称这种存储方式为任务栈。
1. 栈的特点:先进后出
2. 任务栈的配置位置:AndroidMenifest.xml中标签有个属性 android:launcherMode=""

3. 任务栈的4种属性值:

standard 

singleTop 

singleTask

singleInstance

这四种属性值就是我们所说的Activity的启动模式。

1.android:launchMode="standard":标准模式,就是默认的加载模式,采用后进先出的栈模式,越早创建的界面越晚退出(我们可以把一个应用看成一个容器,一个应用可以有多个界面,即一个应用可以有多个Activity,Activity进入退出容器按照栈模式)

2.android:launchMode="singleTop": 如果界面不在栈顶,则可以创建,如果在栈顶,不能再创建该界面。

应用场景:手机卡屏时多次点击某个按钮就会启动多个同样的界面,用户体验不好,如果配置了该属性 就能解决该问题。比如我们可以在 登录界面设置该属性(防止用户重复点击)

3.android:launchMode="singleTask:判断任务栈里面有没任务,如果没有则创建,如果有,判断任务上面有没其他任务,如果有则全部杀掉在他上面的任务,并且把自己的任务提到最前。  

应有场景:比如淘宝客户端,我们进入主页,然后又点击了购物车,我的淘宝界面,当我们再次点击主页,然后退出,就直接退出了。

4.android:launchMode="singleInstance":

举个例子,现有一个界面B:

1)如果B还没有创建.则为B创建一个容器
2)如果B创建了,启动的是其他页面,将其他页面所在的容器提前,并将他添加到他所在的容器的栈顶

3)如果B创建了,启动的是B ,将B的容器提前 


singleInstance模式如何退出:

先将最前的容器的栈顶从顶往下退出,直到容器变空,再看后面有没容器,如果有,则又重新从栈顶开始退出,如果所有容器都退出 则程序退出运行

你可能感兴趣的:(Android)