Activity启动模式系列(三)如何新建一个非singleInstance的正常可用的任务栈

博客围绕在Android中new一个新栈展开,目标是让新栈功能与非singleInstance的栈相同。分析了standard、singleTop、singleInstance等模式,最终选择singleTask配上taskAffinity。通过测试验证了该方式有效,还探讨了将Test2换成singleInstance时后续Activity的栈归属问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目标:我们的目标是new一个新的栈,而这个栈的功能是要求和其他f非singleInstance的栈一样,

可以通过standard或者singleTop堆Activity

 

分析:首先排除 standard和singleTop 这两个都是不能new 新栈的,实验下来即便配上taskAffinity属性也没有任何反应

而singleInstance虽然可以有新栈,但是栈内只能有一个实例,配上taskAffinity同样没有任何反应,这样的话也不好用,

所以只有一个选择了,singleTask配上taskAffinity

----------------------------------------------------------------------------------------------------------------------

测试:

MainActivity跳--->Test1跳--->Test2跳--->Test3跳--->Test4

其中Test2是singleTask的,但是配上了taskAffinity属性。

测试下来发现Test3,Test4都会跟在Test2所开启的task内,而不会跟在MainActivity的栈内,证明这种方式有效!

-------------------------------------------------------------------------------------------------------------

疑问:上面的测试里面如果Test2换成了singleInstance,后面的Test3,Test4会在哪个栈内?

答:会跟在MainActivity的栈内!

这个时候按回退键你会发现会跳过Test2,只有当MainActivity栈内的所有Activity都回退完了,才会回退到Test2.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值