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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • java 命令行运行jar包_java命令行运行jar包详解2016

    java 命令行运行jar包_java命令行运行jar包详解2016java命令行运行jar包详解2016jar包是什么呢?jar是javaarchivefile的简写。从名字就可以知道,它的应用与Java息息相关。下面就详细介绍如何自己生成jar包,这样我们管理我们自己的代码(尤其是一些比较重要而且不会或者很少有修改的代码)。下面一起来学习jar命令的一些常用方法,仅供参考!安装好JDK之后,jar.exe就已经安装好了。在命令行中键入jar命令之后,就会…

    2022年10月5日
    3
  • Python遗传和进化算法框架(一)Geatpy快速入门[通俗易懂]

    Python遗传和进化算法框架(一)Geatpy快速入门[通俗易懂]Geatpy是一个高性能实用型的Python遗传算法工具箱,提供一个面向对象的进化算法框架,经过全面改版后,新版Geatpy2目前由华南农业大学、暨南大学、华南理工等本硕博学生联合团队开发及维护。Website(includingdocumentation):http://www.geatpy.com Demo:https://github.com/geatpy-dev/geatp…

    2022年5月19日
    59
  • 修改ntp服务器地址,修改ntp服务器地址

    修改ntp服务器地址,修改ntp服务器地址修改ntp服务器地址内容精选换一换修改子网名称、DNS服务器地址等。当前在部分区域中,子网已从虚拟私有云中解耦,解耦后子网拥有独立入口。未解耦:在虚拟私有云详情页的“子网”页签,可对子网进行操作。本小节的操作步骤指导以此入口为例。已解耦:在进入“网络>虚拟私有云”后,在左侧导航栏直接选择“子网”,可对子网进行操作。登录管理控制台。在管理控制台左上角单击,选择区域和项目网关创建成功以后,…

    2022年6月14日
    29
  • 安全帽识别 安全帽佩戴效果 安全帽检测 yolov4安全帽识别 yolov3

    安全帽识别 安全帽佩戴效果 安全帽检测 yolov4安全帽识别 yolov3施工场景下的行为识别领域。该应用领域在技术上可拆分为两部分:视频跟踪和行为识别。这一周密集调研了文献,发现着实是一个大坑。其中的视频跟踪最近的各頂会论文出现最多的是单目标跟踪,而我们要解决的确是多目标跟踪,最近出的较好的能实用性的是deepSort;真实的施工场景中摄像头的远近,拍摄的遮挡,工人服装的统一,重叠,违规动作幅度的大小等都是巨大的挑战;行为识别方面最近出的论文较多,能实用性的目前敲定ECO模型;在跟踪过程中某一个工人的时空管道数据的抽取也是一个难题等等。无论如何,这块硬骨头得啃下来。行为识别模

    2022年5月19日
    30
  • 编译原理之文法

    编译原理之文法编译原理之文法

    2022年4月25日
    40
  • 深度linux iso镜像,深度 Deepin 15 正式版 ISO 镜像下载 – 精美易用适合国人学习的国产 Linux 发行版……「建议收藏」

    深度linux iso镜像,深度 Deepin 15 正式版 ISO 镜像下载 – 精美易用适合国人学习的国产 Linux 发行版……「建议收藏」本帖最后由javy于2016-1-822:06编辑现在除了Windows和Mac之外,越来越多朋友想要学习使用一下Linux系统。不过,国外的诸如CentOS、Ubuntu似乎“专业”了一点,对于新手/普通用户,面向国人的优麒麟或深度操作系统可能更加合适。作为优秀的国产Linux发行版之一,深度Deepin操作系统近年来发展相当迅速,团队投入了十足精力开发和精心设计…

    2022年5月16日
    54

发表回复

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

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