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依然会被激发而转到前台显示。

你可能感兴趣的:(android)