Activity的四种启动模式

点击打开链接

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
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值