Android结束Activity完美退出程序

移动开发 Android
关于完全退出Android程序,网上这方面的帖子很多,方法也很多。重要的是选择适合自己的方法,这里介绍了一种使用Application来管理程序的生命周期,实现完美退出。

记得当时自己写的第一个比较完整的项目的时候就遇上了这个问题,由于对Activity的生命周期了解不够,又使用了TabActivity使得层次关系 比较复杂,在程序中添加的“退出”菜单项经常无法完全退出,之后网上各种搜索,各种方法也试过了,什么System.exit(0)啊,结束进程之类的 啊,都依然无效果。

后面才发现的这个方法。思路也很简单,回想自己当初为了解决这个问题时的苦苦寻觅,遂决定将其共享,供遇到此问题人士作为参考。

啰嗦够了,上思路:添加一个全局变量作为程序退出的标记(boolean类型),当需要退出程序时置为true,程序中每个Activity的onStart方法中对该变量进行判断,为true就结束自己。
看代码吧:

使用Application来保存一个全局变量isProgramExit。(对Application使用不熟悉的话查看相关资料)

  1. public class MyApplication extends Application { 
  2.  
  3. // 程序退出标记 
  4.  
  5. private static boolean isProgramExit = false
  6.  
  7. public void setExit(boolean exit) { 
  8.  
  9. isProgramExit = exit; 
  10.  
  11.  
  12. public boolean isExit() { 
  13.  
  14. return isProgramExit; 
  15.  
  16.  
  17. }  

在你退出时需要结束的每个Activity的 onStart方法加上以下代码:

  1. protected void onStart() { 
  2.  
  3. super.onStart(); 
  4.  
  5. MyApplication mApp = (MyApplication)getApplication(); 
  6.  
  7. if (mApp.isExit()) { 
  8.  
  9. finish(); 
  10.  
  11.  
  12. }  

比如,程序中有三个Activity,A —— B —— C;现在在C中有个按钮,点击退出整个程序。按照上面说的,在A和B的onStart方法中加入判断代码(C中可以不加),C中点击按钮时执行:

  1. MyApplication mApp = (MyApplication)getApplication(); 
  2.  
  3. mApp.setExit(true); 
  4.  
  5. finish();  

这样C结束了自己,按照流程会回到B,然后B中会进行判断,因为退出条件满足,结束自己;再回到A,同样也结束……

可以看到,这种方法并不高明,甚至有些复杂,因为要在每个Activity的onStart中都加上判断。但不可否认的是这种方法却是绝对有效的,不管你的程序中Activity如何跳转来跳转去,只要一声令下,通通结束,屡试不爽。

所以,有遇到程序退出问题的朋友可以作为参考。

责任编辑:徐川 来源: cnblogs
相关推荐

2015-11-09 14:46:49

Android安全

2013-03-26 11:35:15

设置Activity进

2014-05-27 14:33:37

AndroidActivitysingleTask

2014-05-27 15:04:15

AndroidActivitysingleTask

2014-05-27 15:09:13

AndroidActivitysingleTask

2014-05-27 14:59:24

AndroidActivitysingleTask

2014-05-27 14:16:08

AndroidActivitysingleTask

2014-05-27 14:28:25

AndroidActivitysingleTask

2014-05-27 14:44:26

AndroidActivitysingleTask

2014-05-27 15:07:07

AndroidActivitysingleTask

2014-05-27 15:11:20

AndroidActivitysingleTask

2014-05-27 15:17:46

AndroidActivitysingleTask

2014-05-27 14:12:49

AndroidActivitysingleTask

2015-11-09 14:37:45

Android安全

2014-05-27 14:09:52

AndroidActivitysingleTask

2011-09-02 09:45:39

交互设计Android

2012-02-17 17:07:30

Android安全Activity劫持

2015-10-20 15:54:16

android源码滑动关闭

2013-01-08 13:33:07

Android开发Activity入门指南

2014-08-08 10:36:12

ActivityAndroid
点赞
收藏

51CTO技术栈公众号