Android Activity Launch Mode

1.intent 决定Activity所在的Task(Activity 堆栈)

对于"standard" 和 "singleTop" 模式, 是task在产生intent,除非intent里设置了FLAG_ACTIVITY_NEW_TASK 标志,设置了此标志,这个activity将选择另外一个task。


相对的 singleTask 和 singleInstance 模式标记activity作为一个task的根,他们永远不会选择另外一个task。

 


2.一个activity可以不可以有多个实例?
“standard" or "singleTop" 模式的activity可以被实例化多次,而且可以属于多个task,一个task也可以包含一个activity类的多个实例。

 

3.一个activity的实例允不允许他所在的task包含其他activity类的实例?
singleInstance 的activiy是它所在的task里头唯一的activity。其他activity的实例都将被分配到其他task不管intent 有没有 FLAG_ACTIVITY_NEW_TASK 标志。除了这一点,它和 singleTask是一样的。

 

4.是否一个新的实例会被启动来响应新的intent?
standard Acticity会启动新实例响应每一个新的intent请求。在 singletop 模式下,如果这个activity在activity栈的最上边,他的实例会被复用,否则会产生新的实例。

永远不会有多余一个的实例当处于singleTask 和 singleInstance 模式。singleInstance所在的栈只有一个实例,所以它处在服务新的intent的位置上。 但是
singleTask 的task可能会有多个activity实例,而且singleTask 的activity不一定在最上边,遇到这种情况,intent会被丢掉,但是task依然会被激发而转到前台显示。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值