Android_完美退出应用方法
来源:互联网 发布:stata和python 编辑:程序博客网 时间:2024/06/05 17:19
在网上找了好几个完美退出app的方法,都看了一下,最后选择了一个靠谱的ExitApplication来继承Application来退出应用,但是其中也遇到很多问题。
先贴一段网上都有的代码:ExitApplication.java
package com.biceng.utils;import java.util.LinkedList;import java.util.List;import android.app.Activity;import android.app.Application;public class ExitApplication extends Application {private static ExitApplication exitApplication;private List<Activity> activityList = new LinkedList<Activity>();private ExitApplication() {super();}public static ExitApplication getInstance() {if (exitApplication == null) {return new ExitApplication();} else {return exitApplication;}}public void addActivity(Activity activity) {activityList.add(activity);}public void exit() {for (Activity activity : activityList) {activity.finish();}System.exit(0);}}
这是一个最基本的单例模式写的,思路就是将所有打开的activity,都加载到一个LIst里面,最后要退出时,将LIst中的activity都finish()掉。
再每个activity的oncreate()方法里都加上一句:ExitApplication.getInstance().addActivity(this);
在想退出时,退出方法里调用:ExitApplication.getInstance().exit();
这样一看,这个方法其实一点问题都没有,但是,在实测中,总是出现退出不了的问题。
问题困扰了我不少时间,也在网上找了很多类似的代码,修修改改,均没有效果。
最后无意间,看到了一个大神的blog中,也有一段类似的代码,细心研究了一番,他的代码更严谨,增加了线程同步的概念,提醒系统回收垃圾等。
大神的代码:
package com.biceng.utils;import java.util.LinkedList;import java.util.List;import android.app.Activity;import android.app.Application;public class ExitApplication extends Application {private static ExitApplication instance;private List<Activity> activityList = new LinkedList<Activity>();private ExitApplication() {}public synchronized static ExitApplication getInstance() { if (null == instance) { instance = new ExitApplication(); } return instance; }public void addActivity(Activity activity) {activityList.add(activity);}public void exit() {try { for (Activity activity : activityList) { if (activity != null) activity.finish(); } } catch (Exception e) { e.printStackTrace(); } finally { System.exit(0); } }@Override public void onLowMemory() { super.onLowMemory(); System.gc(); //告诉系统回收 } }
然后,再去系统测试,果然可行。不由得告诉同事,困扰了几天的bug,终于解决了。
附上大神的blog地址:
http://blog.csdn.net/way_ping_li
0 0
- Android_完美退出应用方法
- android 完美退出当前应用的方法
- Android--完美退出应用
- Andorid完美退出应用
- APP应用完美退出的方法的尝试
- android_退出
- android之完美应用退出
- Android中那些完美和不完美退出应用的方法
- android完美的退出方法
- Android经典完美退出方法
- Android经典完美退出方法
- Android之完美退出方法
- Android经典完美退出方法
- Android之完美退出方法
- Android退出整个应用之完美解决方案
- android之完美退出应用2
- 退出应用的方法
- Android_完全退出
- 鸟哥的私房菜:Bash shell(三)-命令别名与历史指令
- 用JS判断两个数字的大小
- struct与typedef struct的区别
- 3条sql语句的性能对比
- 最近工作总结
- Android_完美退出应用方法
- 【转】分布式集群系统下的高可用session解决方案
- opencv2.49+vs2010的配置出现1>LINK : fatal error LNK1104: 无法打开文件“…….lib”解决方案
- 小波变换 opencv
- 《数据结构》实验1.1 java 中的运用
- Hive简介
- Java没有头文件的原因
- 一个简单的日历的实现
- Codeforces 468A 24 Game(构造)