博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Android 完美退出 App (Exit)
阅读量:6317 次
发布时间:2019-06-22

本文共 1199 字,大约阅读时间需要 3 分钟。

hot3.png

最近两天为了解决上面退出程序问题折腾了半死,在google & baidu 上面找了很久、很久出来的完全千篇一律,说的方法有三,但是经过我试验后全部不行。

      三个方法分别是:

 

  1. killProcess, 这种方式当你kill后 Activity 会返回到上一个Activity
  2. Android Level 8(包含8)前使用一个API来操作,Level8以后又是另外一种,所以不能通用
  3. 使用 FLAG_ACTIVITY_CLEAR_TOP,从 A 到 B

下面介绍自己的方式:

大家都知道 Android 的 Activity 是存着历史栈的,比如从 A -> B -> C,C 完成 finish 后回到 B,把所有的Activity 都 finish了,程序就自然退出了。 当然在 finish 的同时也需要是否自己程序的其他资源。所以需要想个办法把 Activity 给存起来。然后在程序退出的地方调用它们的 finish()方法。

使用全局变量。对了,第一个想到的就是继承 Application,代码入下。

[java]  

  1. public class AgentApplication extends Application {  
  2.   
  3. private List<Activity> activities = new ArrayList<Activity>();  
  4.   
  5.     public void addActivity(Activity activity) {  
  6.         activities.add(activity);  
  7.     }  
  8.   
  9.     @Override  
  10.     public void onTerminate() {  
  11.         super.onTerminate();  
  12.           
  13.         for (Activity activity : activities) {  
  14.             activity.finish();  
  15.         }  
  16.           
  17.         onDestroy();  
  18.           
  19.         System.exit(0);  
  20.     }  
  21. }  

然后在 Activity  onCreate 的时候来调用  addActivity (),有人可能想到这个Application需要在所有的 Activity  onCreate的时候都使用,需要做一个单例实例。其实根本不需要。在 Activity 中使用  this.getApplication() 就可以了。

最后在你需要推出程序的地方调用 application.onTerminate() 就可以了。记住:super.onTerminate() 必须调用,代码中的 onDestroy()是我自己的释放其他资源的方法,不是系统的。

 

运行以上代码后,在LogCat 中会出现一行提示:

Process  包名 (pid  xxxxx)  has died.  证明你的程序退出了。现在你可以测试了。

 

 

转载于:https://my.oschina.net/u/2453842/blog/808467

你可能感兴趣的文章
php 解析xml 的四种方法(转)
查看>>
冲刺周期会议八
查看>>
20172307 2017-2018-2 《程序设计与数据结构》实验2报告
查看>>
UVa 1354 Mobile Computing | GOJ 1320 不加修饰的天平问题 (例题 7-7)
查看>>
HDU2050 折线分割平面
查看>>
除了IE浏览器,其他浏览器都联不上网怎么办~转载百度经验
查看>>
MySQL事务隔离级别初探
查看>>
JavaScript兼容性总结一点点
查看>>
600篇以上博客,才能进阶到精通的地步,奋斗吧少年
查看>>
汇编语言第一章基础知识总结
查看>>
python服务器安装配置过程记录
查看>>
apache 多域名配置
查看>>
Ajax技术详解
查看>>
[LeetCode] Next Permutation
查看>>
php simple_html_dom 一个iconv错误引起解析中断的问题,貌似内存溢出
查看>>
每日一记--Mysql错误代码1067
查看>>
nginx编译安装
查看>>
nginx安装waf防护
查看>>
[脚本]---删除某流氓花瓣壁纸程序脚本
查看>>
继承与派生
查看>>