Lunch Mode

A B--Standard:

先进先出
结论:
每个Intent,都创建了一个新的Activity来响应,并且Back时是按照弹栈的顺序处理的。

A--Standard  B--SingleTop:

Task:12 LunchModeActivityA onCreate.
A
再启动A:
Task:12 LunchModeActivityA onCreate.
A
再启动B:
Task:12 LunchModeActivityB onCreate. 
AAB
再启动B:
Task:12 LunchModeActivityB onNewIntent.
AAB
结论:
当B不在栈顶时,仍然会创建B的新实例。
当B在栈顶时,请求启动B的Intent并没有触发创建B的新实例,而是触发了栈顶B的onNewIntent()


按Back键依次返回桌面,输出依次为:
Task:12 LunchModeActivityB onDestroy.
AA
Task:12 LunchModeActivityA onDestroy.
A
Task:12 LunchModeActivityA onDestroy.
null
结论:
虽然发送了四次Intent,但实际上只创建了3个Activity,所以只有3次销毁输出。


A--Standard,B--SingleTask:

Task:3 LunchModeActivityA onCreate.----A
启动B:
Task:3 LunchModeActivityB onCreate.----AB
启动A:
Task:3 LunchModeActivityA onCreate. ----ABA
启动B:
Task:3 LunchModeActivityB onNewIntent.
Task:3 LunchModeActivityA destroyed. ----AB
结论:
当B已经存在时,再次请求B会触发已经存在的B实例的onNewIntent;
并且如果B所在的任务栈上面有其他Activity,那么其他Activity会被销毁。


A--Standard,B--SingleInstance:

Task:4 LunchModeActivityA onCreate.
A
启动B,此时新创建了任务栈5,和先前的A并不在一个任务。
Task:5 LunchModeActivityB onCreate.
A     B
再启动B,没有创建新实例:
Task:5 LunchModeActivityB onNewIntent.
A     B
再启动A,再旧的任务4中创建了A的新实例
Task:4 LunchModeActivityA onCreate.
AA    B

按下Back键:
Task:4 LunchModeActivityA onDestroy.
A    B
看输出和前面没区别,但是注意界面,此时不是切换到B界面,因为此时活动任务是4,所以A被显示了出来

再次按下Back键:
Task:4 LunchModeActivityA onDestroy.
此时因为任务4已经结束,B所在的任务5成为活动任务,B的界面才被显示出来。
null   B

总结:被该属性表示的Activity会标记成另一个Taskid,并且该Activity的实例不会重复创建,back的时候是最后一个显示和退出的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值