Android启动模式、任务和回退栈的简单应用

关于Android的启动模式、任务和回退栈的内容,官方文档已经介绍的非常清楚了,英语好的可以看官方文档:

http://developer.android.com/guide/components/tasks-and-back-stack.html

不想看英文的可以参考这个:http://blog.csdn.net/guolin_blog/article/details/41087993这是郭神翻译官方文档的,翻译的很好很详细。

之前自己遇到了一个这样的问题:假设根activity A要启动一系列的activity,例如A->B->C->D->E,   在进入E之前,A, B, C, D不可以调用finish销毁,但是进入E之后,A,B,C,D就要销毁掉,从而实现退出E后可以直接退出应用。刚开始的时候想到的就是使用启动模式,但是一直没有解决这个问题,后来就使用service+BroadcastReceiver方式来实现,启动E后启动一个service,这个service会发送一个广播,然后让A,B,C,D都注册并接收这个广播,当A,B,C,D接收到这个广播后就调用自身的finish方法销毁自己,这样,每次进入E后,返回之后就直接退出应用了。

但是这种方式很麻烦,在仔细看了官方文档后,我发现可以使用一种非常简单的方式来实现上述的那个需求:

就是使用启动模式来实现,在AndroidMenifest.xml文件中设置E的启动模式为singleTask,然后在D中启动E时设置flag为FLAG_ACTIVITY_CLEAR_TASK。

该flag的文档介绍是:

If set in an Intent passed to Context.startActivity(), this flag will cause any existing task that would be associated with the activity to be cleared before the activity is started. That is, the activity becomes the new root of an otherwise empty task, and any old activities are finished. This can only be used in conjunction withFLAG_ACTIVITY_NEW_TASK.

就是说当使用FLAG_ACTIVITY_CLEAR_TASK来启动一个activity(该activity设置了启动模式为singleTask)时,这个activity就会成为一个新的task的根activity,并且之前与该activity相关的那个task会被销毁掉。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值