`
jiezzy
  • 浏览: 5336 次
社区版块
存档分类
最新评论

Android结束Activity退出程序的一种有效方法

阅读更多

关于完全退出Android程序,网上这方面的帖子很多,方法也很多。记得当时自己写的第一个比较完整的项目的时候就遇上了这个问题,由于对 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.  

 

在你退出时需要结束的每个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.  

 

比如,程序中有三个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如何跳转来跳转去,只要一声令下,通通结束,屡试不爽。

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

分享到:
评论

相关推荐

    android 退出app 退出应用程序

    退出app的两种方式 1 创建activity的基类,...这样就可以清除栈底之外的所有activity,程序会自动执行onNewIntent方法,在该方法中获取它action, 如果等于"exit_app",则关闭栈底activity,就可以退出App 详情请看代码

    Android编程之退出整个应用程序的方法

    本文实例讲述了Android编程之退出整个应用程序的方法。分享给大家供大家参考,具体如下: 我们在写android应用程序时,经常会遇到想退出当前Acitivity,或者直接退出应用程序.我之前的一般操作是按返回键,或者直接...

    Android 安全退出应用程序的方法总结

    第一种方法:首先获取当前进程的id,然后杀死该进程。 android.os.Process.killProcess(android.os.Process.myPid()) 通过这种方式不能将应用程序完全杀死,并且他不会把当前应用应用的Activity的task任务栈清空 ...

    Android 退出多Activity的application的方式方法

    在开发过程中,我们常常需要一个退出功能,来退出该应用的所有Activity。下面,我们列举一些退出应用的几种方式。 1.利用ActivityContainer来管理所有的Activity的引用 2.使用广播通知BaseActivity结束 3.直接杀...

    Android 双击返回键退出程序的方法总结

    Android 双击返回键退出程序的方法总结 下面先说说LZ思路,具体如下: 1. 第一种就是根据用户点击俩次的时间间隔去判断是否退出程序; 2. 第二种就是使用Android中计时器(Timer),其实这俩种都差不多. 思路是有...

    Android 中 退出多个activity的经典方法

    主要介绍了Android 中 退出多个activity的经典方法 的相关资料,本文给大家分享两种方法,在这小编给大家推荐使用第一种方法,对此文感兴趣的朋友可以参考下

    Android 完全退出应用程序的解决方法

    有一种需要,我们在菜单项中点击退出应用程序,应用程序就退出,不需要回到MainActivity设计:有两个应用界面MainActivity和BActivity,以及用于程序的通用类ExitUtil 步骤: 1、添加一个类,名为ExitUtil 代码如下:...

    android中Activity详解(生命周期、以各种方式启动Activity、状态保存,完全退出等)

    在一个应用程序中通常由多个Activity构成,都会在Manifestxml中指定一个主的Activity,如下设置 <actionandroid name=AndroidintentactionMAIN> 当程序第一次运行时用户就会看这个Activity,这个Activity可以通过...

    实现activity管理器一次退出所有activity

    另外一种方法是用ActivityManager的restartPackage()方法;但是我试过了,都没用。。。还有人说让程序抛出一个异常退出,这种严重影响用户体验的做法我们是极力不推荐的。还有别的方法,如退出的时候发广播通知所有...

    Android应用开发详解

    Android中的数据存取,讲述了Android的四种数据存取方法:Preference、File、SQLite和Network 第10章 Content Provider Content Provider,讲述了Android不同应用程序之间相互共享数据的机制,包括ContentProvider...

    谈谈Android里的Context的使用

    这里大致可以分为两种:一是传递Context参数,二是调用全局的Context. 其实我们应用启动的时候会启动Application这个类,这个类是在AndroidManifest.xml文件里其实是默认的 android:icon="@drawable/ic_...

    Apk完全退出Apk

    做android 应用开发时,经常无法完全退出APK。这里将提供一种方法,展示如何完全退出android应用!

    Android实现双击返回键退出应用实现方法详解

    第一种办法 响应Activity的 onKeyUp事件,两次点击时间大于2秒钟就不响应,小于2秒钟就退出程序 代码: //记录用户首次点击返回键的时间 private long firstTime = 0; /** * 第一种解决办法 通过监听keyUp * @...

    基于Java的Android应用程序开发-24点游戏源码+详细项目说明.zip

    基于Java的Android应用程序开发-24点游戏源码+详细项目说明.zip 基于Java的Android应用程序开发-24点游戏源码+详细项目说明.zip 基于Java的Android应用程序开发-24点游戏源码+详细项目说明.zip 【项目介绍】 该资源...

    android logcat使用

    -v <format> 设置log的打印格式, <format> 是下面的一种: brief process tag thread raw time threadtime long -c 清除所有log并退出 -d 得到所有log并退出 (不阻塞) -g 得到环形缓冲区的大小并退出 -b ...

    Android 再按一次退出程序的实现方法

    第一种(Handler+标志位) 代码如下:private boolean isExit; private Handler handler; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); ...

    Android期末复习选择题100道

    1. 下面不是Android四大组件之一的( B ) A. Activity B.Intent C. Service D. ContentProvider 2. 下面关于广播叙述错误的是(A) A. 广播是Android四大组件之一 B. BroadcastReceiver有两种注册方式,静态注册...

    Android退出应用最优雅的方式(改进版)

    我们先来看看几种常见的退出方法(不优雅的方式) 一、容器式 建立一个全局容器,把所有的Activity存储起来,退出时循环遍历finish所有Activity import java.util.ArrayList; import java.util.List; import ...

    android 面试2

     答:单个的Activity,调用finish、killProcess()、System.exit()方法退出  多个Activity  在2.1之前,可以使用ActivityManager的restartPackage方法。  它可以直接结束整个应用。在使用时需要权限android....

    史上最全的android面试题库.pdf

    3. 如何将一个Activity设置成窗口的样式。(Edited by Sodino) 4. 如何退出Activity?如何安全退出已调用多个Activity的Application? 5. 请介绍下Android中常用的五种布局。 6. 请介绍下Android的数据存储方式。...

Global site tag (gtag.js) - Google Analytics