处理home按键清空Activity所在的Task堆栈
来源:互联网 发布:网上礼佛软件 编辑:程序博客网 时间:2024/06/08 06:05
长虹厂商反馈的问题:
当通过intent外部调起的详情页面,按home键回到launcher,再次通过intent调起播放页面,按back键返回,会发现上次调用过的详情页。
想了想,这个问题其实是Activity和Task堆栈的问题。正好回顾一下task,launch mode这几个概念,高手直接略过。
Task是执行用户工作,与用户交互的一组Activity的集合。 当用户在应用启动器中触击一个应用的图标,系统会内存中寻找有没有该应用打开过的堆栈
如果有,这个应用就会回到前台。如果没有这个应用的任务存在,那么创建一个新的 task,这个应用的 “main” Activity打开,并且作为这个 task栈的根 activity。Activity被安排到同一个栈 (back stack)中,其中的 activity按顺序的打开的。
在同一个应用中,打开Activity和按back按键,Activity在堆栈中的变化过程如下:
一般情况下,我们不用担心Activity怎么和task关联,不需要关系Activity如何存在于stack中。但是比如我们现在遇到的问题,厂商明显是想中断这种常态行为,希望按home键离开应用的task时,应用自动清除task内的所有activity。
这个时候,我们就需要使用launch mode和Intent flag来改变activity与task的这种默认行为。
关于launch mode和intent flag不在做详细的解释,参考这里,讲解的很细致。
Activity的四种加载模式 http://marshal.easymorse.com/archives/2950
android之intent的Flag详解 http://hi.baidu.com/jieme1989/item/6e5f41d3f65be848ddf9beb9
画一个流程图,复现厂商说的问题
既然是要求按home按键,清空堆栈。可以有两种做法。
1.监听Home按键,当用户按下Home按键时,结束自己的进程。
2.可以使用launch Mode配合Intent Flag完成这里有两个问题:
第一个就是Home按键的捕获,一般是捕获不到的。
解决方案:可以使用一个线程去监视系统日志(有点笨,不过还算有效)
第二个是如果是android厂商的话,一般都会修改Framework,可以让他们在home键按下的时候,发一个广播出来。App
可以根据此广播,处理相应的逻辑。
第三方调起应用时,可以在getIntent()中,加入Intent.FLAG_ACTIVITY_CLEAR_TASK ,同时调起的Activity的launch mode设置为singleTask
也就是第三方调起的每个页面,在启动前都会对Task进行清空,从而避免上述问题。
原文链接:http://www.67tgb.com/?p=628
转载注明:望月听涛
- 处理home按键清空Activity所在的Task堆栈
- 清空Activity Task栈
- 清空Task的Back Stack
- Android 清空activity栈的方法
- 清空Activity缓存
- activity中捕获HOME按键
- 启动一个Activity,清空之前所有的Activity
- 清:清空“结果”的内容 20140731 ①文本处理
- Android Home 长按键处理
- android Activity 清空焦点
- android activity的变量是什么时候清空的呢?
- Android Activity的按键事件处理流程
- java清空堆栈中的某个元素
- 处理窗体TEXTBOX清空
- 废纸篓的无法清空的文件处理方法
- stringstream的清空
- 委托的清空
- 【android】App退出清空Activity。
- 4.1 随便说几句 —— 关于USB主机系列
- TLD学习资料blog汇总
- try catch异常处理与SEH
- 加载驱动,取得connection的util文件
- JSON跨域请求
- 处理home按键清空Activity所在的Task堆栈
- 4.2 基于OHCI的USB主机 —— USB设备命令介绍
- 4.3 基于OHCI的USB主机 —— USB标准请求
- 4.4 基于OHCI的USB主机 —— 描述符说明
- C++中的四种强制类型转换的区别
- jsp中使用request.getParameter("XXX")中文乱码
- 4.5 基于OHCI的USB主机 ——USB设备枚举过程
- floodfill算法
- 2013年十月群硕软件web前段笔试面试回顾