Activity的四种启动模式

来源:互联网 发布:与大数据相关的技术 编辑:程序博客网 时间:2024/06/01 09:38

点击打开链接

1 standard

标准启动模式,也是activity的默认启动模式,在这种模式下启动的activity可以被多次实例化。

例如:startActivity(new Intent(A.this,A.class));  当前栈中的状态是A->A

2 singleTop

如果A的启动模式是singleTop,并且A的一个实例已经存在于栈顶中,那么再调用startActivity(new intent(A.this,A.class));启动A时,不会再次创建A的实例,而是重用原来的实例,并且调用原来实例的onNewIntent()方法;如果实例A已经存在但不在栈顶,那么它的行为与standard模式相同,也会创建多个实例。

3 singleTask(或者以FLAG_ACTIVITY_NEW_TASK标志启动)

Activity A跳转到Activity B,B跳转到C(A和C的启动模式都是standard,B的是singleTask)

(1)发现A和B的taskId是一样的

把启动模式设置为singleTask,framework在启动B时只会把它标示为可在一个新任务中启动,至于是否在一个新任务中启动,还要受其他条件的限制。

无论怎样,被activity(B)启动的其他activity会和该activity同时存在于这个任务中(无论是新任务还是原来的任务)

(2)设置B的taskAffinity属性且不是包名

结果表明:B的taskId和A不同,C和B是相同的

如果B只是设置启动模式为singleTask,而不设置taskAffinity,即3个activity的taskAffinity相同,都为应用的包名,那么B是不会开启一个新任务的。

如果设置了B的taskAffinity属性且不是包名,这时会开启一个新的任务,然后将B启动到这个新任务中。

(3)再次写一个应用,有两个Activity,分别是D和E

刚才那个应用不变,A,B,C(包名package="com.hxf.mode.appone"),A和C的启动模式是默认的,B的启动模式是singleTask,并且taskAffinity="com.hxf.mode.b"

这个应用的包名package="com.hxf.mode.apptwo",D的启动模式默认(standard),E的启动模式为singleTask且taskAffinity="com.hxf.mode.b"

结果表明:A的taskId=3,B的taskId=4,C的taskId=4(由B决定),D的taskId=5,E的taskId=4

结论:把两个不同的app(进程不同)的不同singleTask模式的activity的taskAffinity设为相同,他们是运行同一个task的;任务(Task)不仅可以跨应用(Application),还可以跨进程(Process)

(4)验证:singleTask在同一个任务中具有唯一性

A,B,C,D四个Activity,  A跳转到B,B跳转到C,C跳转到D,4个activity都不设置taskAffinity属性,B的启动模式为singleTask,其他的启动模式都是默认的,这样这4个activity会在同一个任务中开启。

点击D中的按钮,跳转到B,此时栈中的状态为A->B,表明:singleTask在任务中是唯一的,并且清除了同一任务中它上面所有的activity,这个B的实例是重用的上次已有的实例而不是重新启动的。

结论:在启动一个singleTask的Activity实例时,如果系统中已经存在这样一个实例,就会将这个实例调度到任务栈的栈顶,并清除它当前所在任务中位于它上面所有的activity。


                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       






0 0
原创粉丝点击