注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

是缘是情是童真

如果你用笑脸面对 你会看见别人的笑脸

 
 
 

日志

 
 

一次性退出所有activity,简单高效。  

2011-09-19 15:53:10|  分类: 默认分类 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
如果你喜欢开门见山的话,请直接跳到第三段,因为第二段描述的问题有些抽象,无视第二段是不影响理解的。

        前一阵子,我们公司的APP项目终于解决了在程序崩溃后或者跳转过程中黑屏后,退出程序仍然弹出大量打开过的activity,因此无法一次性退出的BUG。在退出后弹出这么多前打开的过的activity,都要用户一个个关闭,属于比较严重的BUG,无法正常使用。用过广播的方法的来finish所有的activity,也试过kill掉自己的进程实现一次性退出程序,但是效果不佳,主要是程序崩溃或者跳转黑屏后,这问题好像盖不住了,最后用了一个比较取巧的方法解决了,对正常退出和崩溃后退出都有效,主要目的还是要关闭所有的activity实现一次性退出。现在我把改良后的方法贴出来分享给大家交流一下。

        可以利用清理历史栈的方法,来巧妙关闭所有activity,首先用一个设置为不可见的activity A来启动程序,这个activity A的作用只是用来垫栈底,只有启动和退出程序才会用到这个activity,而你需要退出的时候,只需要跳转至这个activity A  ,并让A  finish自己就可以实现关闭所有的activity。

         Intent intent = new Intent();

        intent.setClass(B.this, A.class);     //B为你按退出按钮所在的activity

        intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);  //最关键是这句

         startActivity(intent);



        Intent.FLAG_ACTIVITY_CLEAR_TOP使得处于栈底的A发挥推土机的作用,从最底层把栈里所有的activity都清理掉,再在自己的oncreate方法加一句finish结束自己,即可实现退出。不放心的话,可以在A的ondestroy方法中加上system.exit(0) ,连跳转过程中的线程也可以终止的。

       至于如何初始化这个activity A ,决定程序是启动还是退出,随便弄一个static类型布尔变量控制一下就可以了。(*^__^*) 

参考:http://hi.baidu.com/joyhub2140/blog/item/929cbd2a58afc9e0e7cd402c.html

  评论这张
 
阅读(423)| 评论(1)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017