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

以A、B举例

SRE实战 互联网时代守护先锋,助力企业售后服务体系运筹帷幄!一键直达领取阿里云限量特价优惠。

1.standard

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

  

                                          

  Android [启动方式:standard singleTop singleTask singleInstance] 随笔 第1张

创建实例B

 Android [启动方式:standard singleTop singleTask singleInstance] 随笔 第2张

创建实例A

 Android [启动方式:standard singleTop singleTask singleInstance] 随笔 第3张

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

2.singleTop

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

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

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

 Android [启动方式:standard singleTop singleTask singleInstance] 随笔 第4张

创建实例A

 Android [启动方式:standard singleTop singleTask singleInstance] 随笔 第5张

 

 

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

3.singleTask

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

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

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

 

 

 

 Android [启动方式:standard singleTop singleTask singleInstance] 随笔 第6张

创建实例A

 Android [启动方式:standard singleTop singleTask singleInstance] 随笔 第7张

B与C移除。

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

4.singleInstance

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

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

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

 Android [启动方式:standard singleTop singleTask singleInstance] 随笔 第8张

创建实例B

Android [启动方式:standard singleTop singleTask singleInstance] 随笔 第9张Android [启动方式:standard singleTop singleTask singleInstance] 随笔 第10张

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

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

Android [启动方式:standard singleTop singleTask singleInstance] 随笔 第11张Android [启动方式:standard singleTop singleTask singleInstance] 随笔 第12张Android [启动方式:standard singleTop singleTask singleInstance] 随笔 第13张Android [启动方式:standard singleTop singleTask singleInstance] 随笔 第14张Android [启动方式:standard singleTop singleTask singleInstance] 随笔 第15张

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

 

扫码关注我们
微信号:SRE实战
拒绝背锅 运筹帷幄