Android启动模式分为四种,分别为:standard、singleTop、singleTask、singleInstance
stander 标准启动模式:
这是Activity默认的启动模式,也是逻辑最简单的一种,只要Activity使用这种模式进行启动,系统会不管三七二十一,直接create一个Activity实例出来,然后加入到Task顶。
2. singleTop:
这中启动模式和standard的最大区别,就是它在启动时会检查Task顶部是否已经存在该Activity实例,if 存在 则重用已经存在的实例,else 重新创建一个activity实例并加入task顶部。
3.singleTask
这种启动模式相对于上面两个,就比较复杂。如果activity以这种模式启动,会执行下面的流程:
a)系统会先为这个Activity加上Flag_new_task 的标签
b)获取该activity的 taskAffinity属性(该属性默认为应用程序的包名)
c)检查系统中是否已经存在taskAffinity属性值所对应的Task:
!)如果存在该Task:则先检查该Task中是否有目标Activity的实例,if存在,则清空该实例以上所有的Activity实例,将该Activity实例放在Task顶部。如果不存在,则重新创建一个该Activity的实例,并且加入到该Task中。
!!)如果不存在该Task,则创建一个新的Task,并且创建目标Activity并将其加入到Task顶端。
4.singleInstance
这种模式启动Activity,会放置在一个单独的Task中,而且这个task中只有着一个activity,系统会保证其全系统唯一性。如果在这类Activity启动新的Activity则所启动的Activity有可能会生成新的Task中或加入到别的已有的task中,这个根据taskAffinity来确定。
Task的一些特点:Task不仅仅可以跨应用,也可以跨进程进行。
本文参考:http://blog.csdn.net/zhangjg_blog/article/details/10923643
来源:oschina
链接:https://my.oschina.net/u/561462/blog/202463