Android 完美退出 App (Exit)
来源:互联网 发布:淘宝销售属性怎么填写 编辑:程序博客网 时间:2024/06/05 02:04
最近两天为了解决Android上面退出程序问题折腾了半死,在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,代码入下。
- public class AgentApplication extends Application {
- private List<Activity> activities = new ArrayList<Activity>();
- public void addActivity(Activity activity) {
- activities.add(activity);
- }
- @Override
- public void onTerminate() {
- super.onTerminate();
- for (Activity activity : activities) {
- activity.finish();
- }
- onDestroy();
- System.exit(0);
- }
- }
然后在 Activity onCreate 的时候来调用 addActivity (),有人可能想到这个Application需要在所有的 Activity onCreate的时候都使用,需要做一个单例实例。其实根本不需要。在 Activity 中使用 this.getApplication() 就可以了。
最后在你需要推出程序的地方调用 application.onTerminate() 就可以了。记住:super.onTerminate() 必须调用,代码中的 onDestroy()是我自己的释放其他资源的方法,不是系统的。
运行以上代码后,在LogCat 中会出现一行提示:
Process 包名 (pid xxxxx) has died. 证明你的程序退出了。现在你可以测试了。
- Android 完美退出 App (Exit)
- Android 完美退出 App (Exit)
- Android 完美退出 App (Exit)
- Android 完美退出 App (Exit)
- Android 完美退出 App (Exit)
- Android 完美退出 App
- Android 完全退出 App,Activity管理者 (Exit)
- ANDROID 完美退出APP的实例代码
- Android退出APP,finish()与System.exit(0)
- Android开发全程记录(六)——完美退出APP的方法
- android 完美退出APP的实例代码(管理activity)
- 【代码】Android 退出 App 方法的完美解决
- Android程序的退出程序(完美)
- Android--完美退出应用
- android ctivity完美退出
- Android完美退出程序
- android 完美退出应用程序。
- android 完美退出应用程序。
- hadoop 排序
- S3C2440上LCD驱动(FrameBuffer)实例开发讲解
- 常见的NSArray和NSMutableArray方法
- Install VNC on Aix
- 修改分区大小on Aix
- Android 完美退出 App (Exit)
- AOM studio (eclispe)参数设置
- hadoop 大全
- win7 64位搭建Mantis 缺陷管理系统(2)--配置及问题修复
- 使用iOS手势UIGestureRecognizer
- python模块之smtplib: 用python发送SSL/TLS安全邮件
- java 注册成 windows 服务
- 黑马程序员_java进阶之-银行业务调度系统模拟(二)
- [js]js中获取 <%=request.getContextPath()%>