android app 退出功能,Android 完美退出 App (Exit)

android app 退出功能,Android 完美退出 App (Exit)最近两天为了解决Android上面退出程序问题折腾了半死,在google&baidu上面找了很久、很久出来的完全千篇一律,说的方法有三,但是经过我试验后全部不行。三个方法分别是:killProcess,这种方式当你kill后Activity会返回到上一个ActivityAndroidLevel8(包含8)前使用一个API来操作,Level8以后又是另外一种,所以不能通用使用…

大家好,又见面了,我是你们的朋友全栈君。

最近两天为了解决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.  证明你的程序退出了。现在你可以测试了。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/160722.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • awstats安装流程「建议收藏」

    awstats安装流程「建议收藏」我是直接从网站上下的rpm,然后rpm-ivh的然后直接安装到/usr/local/awstatsapache日志格式要使用combined:CustomLog"/var/log/httpd/access_log"combined我是用的logrotate每天断日志,然后将以前的日志打包成gz存放,于是昨天的日志就是access_log.1.gz添加主机(可以…

    2022年7月16日
    14
  • ubuntu14.04 Markdown编辑器推荐之Remarkable[通俗易懂]

    ubuntu14.04 Markdown编辑器推荐之Remarkable

    2022年1月28日
    105
  • matplotlib-bilibili,抖音很火的动态数据视频自动生成(第四节)-视频,语音合成

    matplotlib-bilibili,抖音很火的动态数据视频自动生成(第四节)-视频,语音合成

    2022年2月20日
    59
  • pycharm for mac安装

    pycharm for mac安装http www xue51 com mac 5604 html 转载于 https www cnblogs com LeesinDong p 10835539 html

    2025年6月7日
    0
  • smartctl命令详解

    smartctl命令详解1、什么是S.M.A.R.T.SMART是一种磁盘自我分析检测技术,早在90年代末就基本得到了普及,每一块硬盘(包括IDE、SCSI)在运行的时候,都会将自身的若干参数记录下来。这些参数包括型号、容量、温度、密度、扇区、寻道时间、传输、误码率等。硬盘运行了几千小时后,很多内在的物理参数都会发生变化,某一参数超过报警阈值,则说明硬盘接近损坏,此时硬盘依然在工作,如果用户不理睬这个报警继续使用,那

    2022年6月25日
    91
  • 六大算法之动态规划_动态规划100题

    六大算法之动态规划_动态规划100题在两条独立的水平线上按给定的顺序写下 nums1 和 nums2 中的整数。现在,可以绘制一些连接两个数字 nums1[i] 和 nums2[j] 的直线,这些直线需要同时满足满足:nums1[i] == nums2[j]且绘制的直线不与任何其他连线(非水平线)相交。请注意,连线即使在端点也不能相交:每个数字只能属于一条连线。以这种方法绘制线条,并返回可以绘制的最大连线数。示例 1:输入:nums1 = [1,4,2], nums2 = [1,2,4]输出:2解释:可以画出两条不交叉的

    2022年8月11日
    2

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号