Android Activity 完全结束并退出程序的实例_Android

关于完全退出Android程序,网上这方面的帖子很多,方法也很多。记得当时自己写的第一个比较完整的项目的时候就遇上了这个问题,由于对Activity的生命周期了解不够,又使用了TabActivity使得层次关系比较复杂,在程序中添加的“退出”菜单项经常无法完全退出,之后网上各种搜索,各种方法也试过了,什么System.exit(0)啊,结束进程之类的啊,都依然无效果。
后面才发现的这个方法。思路也很简单,回想自己当初为了解决这个问题时的苦苦寻觅,遂决定将其共享,供遇到此问题人士作为参考。
啰嗦够了,上思路:添加一个全局变量作为程序退出的标记(boolean类型),当需要退出程序时置为true,程序中每个Activity的onStart方法中对该变量进行判断,为true就结束自己。
使用Application来保存一个全局变量isProgramExit。(对Application使用不熟悉的话查看相关资料)

复制代码 代码如下:

public class MyApplication extendsApplication {
 // 程序退出标记
 private static boolean isProgramExit = false;
 public void setExit(booleanexit) {
  isProgramExit= exit;
 }

 public booleanisExit() {
  return isProgramExit;
 }
}

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

复制代码 代码如下:

protected voidonStart() {
 super.onStart();
 MyApplication mApp = (MyApplication)getApplication();
 if(mApp.isExit()) {
  finish();
 }
}

这样C结束了自己,按照流程会回到B,然后B中会进行判断,因为退出条件满足,结束自己;再回到A,同样也结束……
可以看到,这种方法并不高明,甚至有些复杂,因为要在每个Activity的onStart中都加上判断。但不可否认的是这种方法却是绝对有效的,不管你的程序中Activity如何跳转来跳转去,只要一声令下,通通结束,屡试不爽。
所以,有遇到程序退出问题的朋友可以作为参考。

时间: 2025-01-21 06:15:55

Android Activity 完全结束并退出程序的实例_Android的相关文章

Android Activity切换动画详解及实例

Android Activity切换动画 Android Activity切换动画是指从Activity A 跳转至Activity B的时候,Activity A 有退出动画,Activity B 有进入动画.这个动画的实现很简单,在startActivity(intent)之后调overridePendingTransition ()这个方法就行.比如实现淡入淡出的效果如下: Intent i = new Intent(ActivityA.this,ActivityB.class); Sta

Android Activity 横竖屏切换的生命周期_Android

前言 在开发中常要处理横竖屏切换,怎么处理先看生命周期 申明 Activity 横竖屏切换时需要回调两个函数 ,所以在此将这个两个函数暂时看成是Activity 横竖屏切换的生命周期的一部分,这两个函数如下 onSaveInstanceState(Bundle outState) :Activity 即将销毁时保存数据 onRestoreInstanceState(Bundle savedInstanceState) : Activity 重建或者恢复时候取出数据 横竖屏切换生命周期 1.启动程

Android编程实现简单的UDP Client实例_Android

本文实例讲述了Android编程实现简单的UDP Client.分享给大家供大家参考,具体如下: 该代码在4.2.2内调试通过 1.记得加权限 <uses-permission android:name="android.permission.INTERNET"/> 注意:Android 4.0之后,就不能在主线程进行socket通信,否则会抛异常. 2.代码 MainActivity.java: package mao.example.quicksend; import

Android开发之时间日期组件用法实例_Android

继上一篇时间和日期设置的示例之后,今天来介绍Android的布局组件中有关于时间和日期的设置的组件,希望对大家有所帮助.具体如下: 时间日期设置组件:TimePicker.DatePicker 在布局文件中直接可以添加到我们的布局样式中,具体代码如下: <LinearLayout android:id="@+id/linear1" android:orientation="vertical" android:layout_width="fill_pa

Android中的指纹识别demo开发实例_Android

 指纹识别是在Android 6.0之后新增的功能,因此在使用的时候需要先判断用户手机的系统版本是否支持指纹识别.另外,实际开发场景中,使用指纹的主要场景有两种: 纯本地使用.即用户在本地完成指纹识别后,不需要将指纹的相关信息给后台. 与后台交互.用户在本地完成指纹识别后,需要将指纹相关的信息传给后台. 由于使用指纹识别功能需要一个加密对象(CryptoObject)该对象一般是由对称加密或者非对称加密获得.上述两种开发场景的实现大同小异,主要区别在于加密过程中密钥的创建和使用,一般来说,纯本地

详解Android Activity之间切换传递数据的方法_Android

前面照着android系统的裁剪图片的功能自己写了一个相似的工具.功能是大体上实现了,但留下了一个调用的问题:如何从我的程序调用这个裁剪工具,并且获得裁剪后的图片呢? 其实这个也很简单了,就是intent的基础用法. 先上个图(界面依旧没优化,难看就难看吧): 起始activity,打开图片选择窗口,随便选择一张图片 下面是跳转到裁剪界面 按下crop按钮,退出activity,回到原来界面,并显示裁剪后的图 流程就是这样,也算模拟了系统裁剪功能的整体过程.下面就是实现功能的关键代码和说明了.

android Activity线性布局和表格布局实例讲解_Android

实验中只需要编写相应的xml的代码,java代码不需要更改,因为我们这里只是练习android的界面设计. 线性布局:线性布局就是将各种控件按照行或者列依次进行排列.其中本实验用到的各控件的属性解释如下:android:layout_weight属性是指不同的控件在activity中占有体积大小的比例.android:paddingLeft指内边距左的距离,即控件内文字离控件左边边界的距离.其它的类推.android:gravity指控件内文字相对于控件本身的方向属性,长度为dip,与像素独立的

android Activity线性布局和表格布局实例讲解

实验中只需要编写相应的xml的代码,java代码不需要更改,因为我们这里只是练习android的界面设计. 线性布局:线性布局就是将各种控件按照行或者列依次进行排列.其中本实验用到的各控件的属性解释如下:android:layout_weight属性是指不同的控件在activity中占有体积大小的比例.android:paddingLeft指内边距左的距离,即控件内文字离控件左边边界的距离.其它的类推.android:gravity指控件内文字相对于控件本身的方向属性,长度为dip,与像素独立的

Android编程基础之Menu功能菜单设计实例_Android

本文实例讲述了Android编程中的Menu功能菜单.分享给大家供大家参考,具体如下: Android功能菜单的设计,程序里定义了两个菜单子项,一个是"关于",一个是"退出",当点击"关于"时候,新建一个Toast 提示,当点击"退出"时,我们将结束程序. 程序里除了默认覆盖的onCreate 外之外,还需要另外新建两个类函数:onCreateOptionsmenu ()与onOptionsItemSelected (),前者