大家都知道 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. 证明你的程序退出了。

更多相关文章

  1. android下的gdb调试
  2. Android(安卓)Toolbar详解-实现Material Design 风格的导航栏
  3. Android应用程序目录定义及使用方法
  4. android中Manifest文件的语法层次
  5. 2011-2-14 | Android(安卓)Handler
  6. android AQuery框架执行回调 AjaxCallback
  7. Kotlin&Anko, 扔掉XML开发Android应用
  8. ANE 在 Android(安卓)上的应用
  9. 深入浅出RxJava——在Android中使用响应式编程

随机推荐

  1. android 关于图片的放大,缩小,旋转功能的实
  2. android活动的跳转到另一个活动
  3. 两种方式使用android时间和日期控件
  4. A20启动LUNCH选项修改
  5. react-native调用Android原生模块
  6. Android编译错误Execution failed for ta
  7. Android(安卓)SharedPreferences使用
  8. android【打电话,收发短信实现】
  9. Android(安卓)Toast
  10. Android(安卓)球碰撞反弹 (2)