最近两天为了解决Android上面退出程序问题折腾了半死,在google & baidu 上面找了很久、很久出来的完全千篇一律,说的方法有三,但是经过我试验后全部不行。

三个方法分别是:

killProcess, 这种方式当你kill后 Activity 会返回到上一个Activity

Android Level 8(包含8)前使用一个API来操作,Level8以后又是另外一种,所以不能通用

使用 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 activities = new ArrayList();

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 退出功能,Android 完美退出 App (Exit)相关推荐

  1. android app 退出功能,Android 应用技巧: 手把手教你 优雅实现 “一键退出 App”

    前言 在 Android开发中,会经常存在 "一键退出App" 的需求 但市面上流传着 太多不可用的"一键退出App"功能实现 本文将全面总结"一键退 ...

  2. android 退出功能,android中activity连按两次返回键退出功能

    直接写一个基类BaseActivity.java其它Activity都继承它就可以啦package com.main; import android.app.Activity; import andr ...

  3. android app 天气功能,Android天气预报app改进版

    最近总是有人来和我说我以前写的一个小app无法正常获取数据~Android简易版天气预报app 今天就又运行了下来查找问题,发现或许是接口有限制吧,不能在多台手机使用同个apikey 然后,发现了我写 ...

  4. android中英文切换功能,Android APP 中英文切换

    实习期间,师父要求做app的中英文切换,就顺便记录了下. 一.AndroidManifest.xml文件(清单文件) 在每个要切换语言的Activity下面添加: android:configChan ...

  5. android 选择答题功能,Android APP编写简单答题器

    本文为大家分享了Android APP编写的简单答题器,此答题器可以通过Next按钮选择下一题,新写题目的类Question,有两个成员变量. java代码: package com.android. ...

  6. Android开启手电筒功能(完美适配Android4x,5x,6x)

    原文http://blog.csdn.net/mynameishuangshuai Android4x.5x.6x的手电筒开启方法,写成公共方法,分享给大家. 添加摄像机和闪光灯权限 <uses ...

  7. Android添加拍照功能,Android相机开发(二): 给相机加上偏好设置

    Android Camera Develop: add settings to camera app 概述 继上一篇实现了一个最简单的相机APP后,本篇主要介绍实现相机的各种偏好设置,比如分辨率.闪光 ...

  8. android播放mp3功能,Android Studio实现简单音乐播放功能的示例代码

    项目要求 基于Broadcast,BroadcastReceiver等与广播相关的知识实现简单的音乐播放功能,包括音乐的播放.暂停.切换.进度选择.音量调整. 设计效果 (进度条时间刷新功能还没有实现 ...

  9. android 选择答题功能,Android实现简单的答题系统

    本文实例为大家分享了Android实现答题系统的具体代码,供大家参考,具体内容如下 Question: package com.example.lenovo.exam; /** * Created b ...

  10. android飞机大战功能,Android飞机大战

    点击进行安装下载:https://www.pgyer.com/gUk0 快来玩一下 MainActivity package com.example.administrator.aircraftwar ...

最新文章

  1. 「蚂蚁呀嘿」克星来了!中科院23岁博士生开发「听音识人」,准确率近90%
  2. Centos7更改默认启动模式
  3. 成功解决absl.flags._exceptions.IllegalFlagValueError: flag --train_size=inf: Expect argument to be a str
  4. mysql查询去年本月的数据_MySQL查询本周、上周、本月、上个月份数据的sql代码...
  5. Prepo —— 图标转化器
  6. 《ArcGIS Runtime SDK for Android开发笔记》——(5)、基于Android Studio构建ArcGIS Android开发环境(离线部署)...
  7. 由于两家重要零件厂商的疫情,iPhone 13备货可能受影响
  8. 微软7月修复117个漏洞,其中9个为0day,2个是Pwn2Own 漏洞
  9. jQuery基础之操作属性或文本及其样式 位置 尺寸的方法(重点,常用)
  10. 多渠道打包之动态修改App名称,图标,applicationId,版本号,添加资源
  11. 戴尔r540服务器修改开机启动项,在BIOS设置中如何修改开机启动项
  12. 【标准算例数据源】作业车间、流水车间、柔性作业车间、其它
  13. Android 省电模式 降频吗,开启省电模式会降频吗
  14. bzoj 1233 干草堆tower 优先队列优化dp
  15. 微信V3 - 微信支付统一下单 --01
  16. 311 稀疏矩阵的乘法
  17. CoolHash数据库的产品宣言(Fourinone4.0版)
  18. 假币问题(八枚硬币及n枚硬币)
  19. Replication(上):常见复制模型分布式系统挑战
  20. 使用kingSCADA3.53连接mysql数据库

热门文章

  1. 计算机操作系统笔记第八章磁盘存储器的管理
  2. 计算机技术论文搜索引擎,垂直搜索引擎核心技术研究及展望论文
  3. FreeSwitch学习(1)-总体简介
  4. [luogu]P1852跳跳棋
  5. 未认证公众号接入公众号支付
  6. rss订阅 android,是的!我用这些软件订阅 RSS
  7. 《炬丰科技-半导体工艺》ZnO多晶薄膜异质结
  8. 使用@ConfigurationProperties注解获取为null的问题
  9. setuptools-scm was unable to detect version for‘…/…/某git包‘
  10. Debezium系列之:Debezium UI部署详细步骤