Activity的启动模式

来源:互联网 发布:百度地图排名优化方法 编辑:程序博客网 时间:2024/06/05 08:23

假设有几个Acitivty A、B、C,互相之间可以跳转

1、standard:默认的启动模式,采取压栈的方式,例如for循环100次,100个Intent打开同一个页面,那么此时就会开启100个Activity。例如 A B B B B B ……

2、singelTop:在一些特殊的情况下,为了避免糟糕的用户体验,如果发现任务栈的栈顶已经存在了这个activity,再去开启这个Activity的时候,就不去创建新的activity,而是想要重新复用这个Activity,此时可以使用singleTop的启动模式。在该Activity的Menifast文件中加入以下标签:<activity  android:launchMode = "singleTop"   /activity>,这样就不会重复创建了,作用是避免一个页面被重复开启。例如A B A B A B 而不会出现 A B B B……

3、singleTask:特点是开启一个Activity的时候,先检查任务栈里是否有该Activity,如果有该Activity,则先清除这个Activity上边所有的Activity ,例如 从栈顶带栈底分别是 A B C ,此时要开启C,那么会立刻把A B都清除掉,调回到C。

4、singleInstance:在前边的所有几种状态中,都是在一个任务栈中进行的(说明:当开启了一个应用之后,会对应的开启一个任务栈,把Activity采取压栈的方式放进去,当应用结束之后,这个栈就清空了,但是进程还在,在系统内存不足的时候就会被首先回收掉),但是如果在A的标签加入singleInstance之后,会单独开启一个任务栈把A放进去,不和之前其他的Activity放置在一起,这个任务栈是在之前的任务栈的前边,如果再开启B,那么A所在的任务栈就排在后边,再开启A,那么任务栈又排在前边了,但不会重复开启A  activity。

简要说明:singleInstance模式是开启一个新的任务栈,任务栈里只有一个Activity的实例存在,如果这个Activity被开启,那就把这个任务栈放在前面,如果开启了别的Activity,别的任务栈会放在前边。

极端:在整个手机的操作系统里面,只会有一个实例存在,例如来电页面,只会保证了有1个页面的存在,不能开启别的页面。

0 0
原创粉丝点击