launchmode & clearTaskOnLaunch & finishOnTaskLaunch

1. launchmode

standard

默认值,Activity会依次入栈出栈,相同activity可以存在多个实例,加入依次启动A->B->C->D->C->A->A,则栈中为A B C D C A A,按返回键依次返回。

 
singleTop
standard模式基础上增加一条规则:如果Activit在栈顶,则只能存在一个实例。如果A 已经在栈顶,再次startActivity A时,不会创建新的实例,返回栈顶A。
假如当前栈为 A B C D C A,如果再次startActivity A,返回栈顶A,栈还是 A B C D C A。


singleTask
栈中将会只有一个该Activity实例。
例如:现在栈的情况为:A B C D。B的Launch mode为singleTask,此时D通过Intent跳转到B,则栈的情况变成了:A B。而C和D被弹出销毁了,也就是说位于B之上的实例都被销毁了。

1. singleTask  Activity 不一定在栈底,可以是任何位置。
2. 再次启动时,返回task中的实例,并清除之上的activity。


singleInstance
独自占有一个task。栈底,并且只有一个activity。


2. clearTaskOnLaunch & finishOnTaskLaunch


clearTaskOnLaunch
 该属性task任何activity有效。
 假如依次启动里A->B->C, task为 A B C。
 当进入后台,假如A 设置了clearTaskOnLaunch,再次点启动A的时候,则会销毁B、C。假如B 设置了clearTaskOnLaunch,再次点启动B的时候,也会销毁B、C。
 即:task进入后台,再次从设置了clearTaskOnLaunch的activity进入task,会销毁除根Activity外的其他Activity,显示根activity

 (1)有效情况:再次启动A(设置clearTaskOnLaunch)的时候,会销毁除根activity外的其他activity。
 例如A、B、C属于同一个应用程序,桌面有一个入口A,当从桌面再次启动A的时候,会销毁B、C,显示A。如果A 没有设置clearTaskOnLaunch,则显示的时C,即栈顶Activity。
 桌面有一个入口B并设置了设置了clearTaskOnLaunch,当从桌面再次启动B的时候,也会销毁B、C,显示A。如果B 没有设置clearTaskOnLaunch,则显示的时C,即栈顶Activity。

 (2)按home键后,从近期任务进入,显示的还是栈顶Activity(C)


finishOnTaskLaunch
 该属性task任何activity有效,对task根activity无效。

 当进入后台,再次点启动该task的时候,会销毁设置了finishOnTaskLaunch的activity
 即:task进入后台,只要再次进入该task,不管从A、B、C进入task,只要该task中的activity设置了finishOnTaskLaunch,就会销毁,根activity除外。

 (1)有效情况:从A、B、C进入task,都可以

 (2)按home键后,从近期任务进入,显示的还是栈顶Activity(C)
 
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值