启动模式 launchMode小记

android 的activity启动后是放在一个个的栈里面的,但根据启动模式的不同,对栈里面的activity的处理机制不同。

以下,以A代表launchMode为standard的activity,B为对应launchMode的activity

1:standard

默认的launchMode,启动的activity直接push到栈中。公式为AB+B=ABB;ABA+B=ABAB;

2:singleTop

此模式的activity在栈顶只能有一个,公式为AB+B=AB;ABA+B=ABAB;

3:singleTask

此模式下同一个栈中只能有一个此activity,启动新此activity时,调用旧activity中的newIntent方法,此activity上的其他activity全部销毁

公式为AB+B=AB;ABA+B=AB

另外,如果在另一个程序中有XY两个activity,想到启动此程序中AB中的Bactivity,则为XY+AB=XYAB,而不是XYB

4:singleInstance

此模式下的activity只能存在一个,哪怕是不同的栈


注意:5.0之前的系统,启动singleTask和singleInstance模式的activity时,如果是调用的startActivityForResult();方法,则会直接回调onActiivtyResult();而不会于去等待返回.5.0后不会


5:Intent.FLAG_ACTIVITY_NEW_TASK

 在新的栈中打开新activity.通常使用在service中启动Actitity的场景中,因为在service中并不存在activity栈,若不加这一条启动模式service是不能启动activity的。

当然一般不推荐在service中启动activity

6:FLAG_ACTIVITY_SINGLE_TOP=singleTop

7:FLAG_ACTIVITY_CLEAR_TOP=singleTask

8:FLAG_ACTIVITY_NO_HISTORY 感觉没多少用,以此模式启动的activity在启动其它activity后自动销毁。




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值