关于singleTask 模式的学习体会

这篇博文 http://marshal.easymorse.com/archives/2950 关于区分Activity的四种加载模式 写的很显浅易懂
下面是博文中关于singleTask 的一段讲解

当时看完这段后就设想如果ActivityA 和 ActivityB 都设置为singleTask的话那么在 ActivityB 跳转到 ActivityA,之前的 ActivityA 被调到了任务栈的最前面,如果这时在 ActivityA 跳转到 ActivityB 那么应该是跳转到上一个 ActivityB,接下来看到这个评论
 
就是开始疑惑了,后来自己写个程序测试下,果真跟评论说的一样,就是 ActivityB 也设置为singleTask情况下,每ActivityB 都会产生一个新的实例,后来又改了下程序,添加了和 ActivityC 再测试,发现原来在一个任务栈中,如果一个 Activity 比如说 ActivityA 设置了singleTask,当有个intent要实例化它时,系统会查找任务栈有没有 ActivityA,如果已有的话,就将这个任务栈中排之前的所以 ActivityA 之上的 Activity 销毁,这样ActivityA 就排在栈顶了,而不是像我之前理解的那样以为只是将它调到栈顶。
下面是根据自己的理解画了图





另外一个留意到的地方是,如果一 个ActivityC 设置了singleInstance(单一实例)时,它跳转到了另一个 Activity,比如ActivityB,此时你按back后退键的话,如果此时 ActivityB 所在的任务栈里还有一个 ActivityA,那么就会跳到 ActivityA,不是跳转到 ActivityC,只有当 ActivityB 所在的任务栈无其他 Activity 时,才回跳转回 ActivityC 。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值