栈顶Activity是当前正在显示的。

以A、B举例

1.standard

  不同的Activity都存放在同一个栈中,每次创建实例都会堆放到栈顶,逐次返回直至退出。

  

                                          

Android [启动方式:standard singleTop singleTask singleInstance]-LMLPHP

创建实例B

Android [启动方式:standard singleTop singleTask singleInstance]-LMLPHP

创建实例A

Android [启动方式:standard singleTop singleTask singleInstance]-LMLPHP

点击返回时,从栈顶依次销毁,直至栈空返回桌面。

2.singleTop

  同样是不同的Activity存放在同一个栈,

  1)若A在栈顶,想创建一个新的实例A则不会成功

  2)若A不在栈顶,再创建一个新的实例A,在栈顶会产生一个新的实例A

Android [启动方式:standard singleTop singleTask singleInstance]-LMLPHP

创建实例A

Android [启动方式:standard singleTop singleTask singleInstance]-LMLPHP

点击返回时,从栈顶依次销毁,直至栈空返回桌面。

3.singleTask

  不同的Activity存放在同一个栈,

  1)若A在栈顶,再创建一个新实例A不会成功

  2)若A不在栈顶,创建一个实例A则会回到原来的栈中存在的实例A,A成为栈顶,A之上的实例全部移除。

Android [启动方式:standard singleTop singleTask singleInstance]-LMLPHP

创建实例A

Android [启动方式:standard singleTop singleTask singleInstance]-LMLPHP

B与C移除。

点击返回时,从栈顶依次销毁,直至栈空返回桌面。

4.singleInstance

  不同的栈存在不同的栈中。

  1)若A在栈顶,创建一个新的实例A不会成功。

  2)若B仍未被创建,则新创建的实例B会存放在一个新的栈中。

Android [启动方式:standard singleTop singleTask singleInstance]-LMLPHP

创建实例B

Android [启动方式:standard singleTop singleTask singleInstance]-LMLPHPAndroid [启动方式:standard singleTop singleTask singleInstance]-LMLPHP

  3) 如果此时B的实例已存在且我们在B的页面中创建新的A实例时,不会创建新的A实例,

    页面跳转到原来任务栈中存在的A的实例,存放B实例的任务栈仍然存在

Android [启动方式:standard singleTop singleTask singleInstance]-LMLPHPAndroid [启动方式:standard singleTop singleTask singleInstance]-LMLPHPAndroid [启动方式:standard singleTop singleTask singleInstance]-LMLPHPAndroid [启动方式:standard singleTop singleTask singleInstance]-LMLPHPAndroid [启动方式:standard singleTop singleTask singleInstance]-LMLPHP

    点击返回,依次销毁任务栈,直至返回桌面。

05-19 07:19
查看更多