Activity加载模式(Launch mode)

来源:互联网 发布:梁朝伟替身徐上威 知乎 编辑:程序博客网 时间:2024/05/22 11:37

Activity有四种加载模式:

1standard

2singleTop

3singleTask

4singleInstance

 

1standard模式

1) 默认模式,不需要配置launchMode

2intent跳转时将发送给新的实例。

 

2singleTop模式

1 intent跳转时将发送给新的实例。

2) 如果创建intent的时候栈顶已经有要创建的Activity的实例,则将intent发送给该实例,而不发送给新的实例。

3)可用来解决栈顶多个重复相同的Activity的问题。

 

3singleTask模式

1)只创建一个实例。

2)当intent到来,创建Activity的时候,系统会检查栈里面是否已经有该Activity的实例。如果有直接将intent发送给它。


4singleInstance模式

1)只创建一个实例。


总结

1、判断ActivityTask栈中是否存在是在创建intent的时候,而不是在finish之后。

2standard模式和singleTop模式intent跳转时将发送给新的实例,而singleTasksingleInstance模式只创建一个实例。

3、除singleInstance模式外,其他三种模式都是在同一个task栈中。

4singleInstance模式跳转时会把设置了singleInstance模式的Activity单独放在一个task栈中。实现让别人的程序直接复用你的Activity

5singleInstance模式的activity永远保持在堆栈的顶部(因为它是那个堆栈中唯一的一个activity)。