Android App完全退出方式

2023-11-02

  • 第一种方式是创建一个MyApplication类(继承Application,在AndroidManifest.xml的application标签配置android:name),并在其中加入一个 List<Activity>,每创建一个Activity,便加入到List中,需要退出时,遍历整个List,依次退出就行了。

  • 第二种方式是第一种的改良版,将其中的List<Activity>改成List<WeakReference<Activity>>,存放每个Activity的弱引用,弱引用为空或者get()为空时说明该弱引用的Activity已经释放,将未释放的Activity finish掉即可。
public class MyApplication extends Application {
    public static ArrayList<WeakReference<Activity>> activities = new ArrayList<>();

    public static void addActivity(Activity activity){
        WeakReference<Activity> weakReference = new WeakReference<>(activity);
        activities.add(weakReference);
    }

    public static void removeAll(){
        for (WeakReference<Activity> activity:activities) {
            if (activity != null && activity.get() != null && !activity.get().isFinishing()){
                activity.get().finish();
            }
        }
        activities.clear();
    }
}

  • 第三种方式只适合从特定的Activity页面中退出整个App(如只在主页面退出),将该Activity设为android:launchMode="singleTask",在这里详细解释下SingleTask:

采用此模式的Activity在同一Task内只有一个实例,
1. 当Task栈内没有此Activity,启动此Activity时会创建一个此Activity的实例,并将其加入栈顶。
2. 当此Activity已经位于栈顶时,再次启动则直接复用已有的实例。
3. 当此Activity位于栈中,但没有在栈顶,则清空栈中在此Activity上所有的Activity,从而使此Activity位于栈顶

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Android App完全退出方式 的相关文章

随机推荐

  • Intellij idea 快捷键(1)--生成for循环代码块

    使用Intellij idea 时 想要快捷生成for循环代码块 itar 生成array for代码块 for int i 0 i lt array length i array i itco 生成Collection迭代 for Ite
  • 程序员职业的未来会受到失业的影响吗?

    关于提到的程序员未来是否会失业的问题 这是一个复杂而有争议的话题 虽然自动化和人工智能的发展可能对某些程序员的工作产生一定冲击 但是在同样的时间 也会产生新的就业机会和需求 技术的不断进步需要我们持续学习和适应 同时培养创新能力和解决问题的
  • servlet容器、web容器、spring容器、springmvc容器

    容器介绍 web容器中有servlet容器 spring项目部署后存在spring容器和springmvc容器 其中spring控制service层和dao层的bean对象 springmvc容器控制controller层bean对象 se
  • Java工程师看过来:入门到高级书单都在这!

    关于程序员 除了做项目来提高自身的技术 还有一种提升自己的专业技能就是 多 看 书 Java程序员你们准备好了吗 我们大圣众包 www dashengzb cn 双手奉上Java程序员必读之热门书单 入门 HeadFirstJava 作者
  • oracle 9i在线重定义功能应用于生产库

    今天 在客户生产库了用oracle 9i的在线重定义功能实现了由普通表转换为分区表的实施 总体实施过程还算 比较顺利 以下是测试过程 create test mid table create table test test mid ID N
  • python下使用libsvm:计算点到超平面的距离

    2019独角兽企业重金招聘Python工程师标准 gt gt gt 最近在看的资料里涉及到计算 点到支持向量机分类超平面的距离 这一点内容 我使用的svm是libsvm 由于是新手 虽然看了一些资料 但中英转换误差等等原因导致经常出现理解错
  • Postman post请求返回错误状态码总结

    目录 Postman 踩坑总结 一 404 page not found 1 请求的参数不对 比如是POST请求但是参数却写的是GET 2 页面url写错或不存在 二 status 500 最近在使用Postman对接口进行测试 踩了几个坑
  • springboot2集成knife4j(swagger3)

    springboot2集成knife4j swagger3 springboot2集成knife4j swagger3 环境说明 集成knife4j 第一步 引入依赖 第二步 编写配置类 第三步 放行相关资源 保证启动了knife4j 第四
  • 数据库系统课程设计(高校成绩管理数据库系统的设计与实现)

    目录 1 需求分析 1 1 1 数据需求描述 1 1 2 系统功能需求 3 1 3 其他性能需求 4 2 概念结构设计 4 2 1 局部E R图 4 2 2 全局E R图 5 2 3 优化E R图 6 3 逻辑结构设计 6 3 1 关系模式
  • php 实现excel打包下载

    场景说明 举例说明 一个表单下面有多个提交的留言 导出这些留言 并且一个表单是一个excel 生成zip压缩包 msgList是数据 这里我将要导出的列表 列标题 名称都放在了一个变量中传递过来了 具体的数据结构如下 msgList for
  • java.lang.NoClassDefFoundError: com/jhlabs/image/RippleFilter 验证码功能报此错误的解决办法

    利用kaptcha实现验证码功能时报以下错误 原因时缺少jar包 下载并添加jar包即可 缺少的jar包如下 java lang NoClassDefFoundError com jhlabs image RippleFilter com
  • 深度学习在CV领域的进展以及一些由深度学习演变的新技术

    CV领域 1 进展 如上图所述 当前CV领域主要包括两个大的方向 低层次的感知 和 高层次的认知 2 主要的应用领域 视频监控 人脸识别 医学图像分析 自动驾驶 机器人 AR VR 3 主要的技术 分类 目标检测 识别 分割 目标追踪 边缘
  • [转载]ubuntu编写shell文件基础

    https www cnblogs com tnxk archive 2012 08 09 2630195 html
  • C语言:二叉排序树的操作

    实现的功能 1 建立二叉排序树 2 输出中序遍历结果 3 查找数据 0 退出 代码 include
  • conda与pip

    通过conda info命令查看当前的镜像源 设置conda的镜像源 conda config add channels https mirrors tuna tsinghua edu cn anaconda pkgs free conda
  • 网络安全的不同角度

    扫盲 相关概念 DevSecOps FreeBuf咨询 快HVV了 聊聊攻防演练中安全产品的安全性 FreeBuf甲方群 https www freebuf com articles neopoints 266464 html FreeBu
  • gdb常用操作

    一 gdb功能介绍 程序调试工具 可以动态的改变程序的执行环境 二 gdb使用 1 运行 1 gdb 程序名 2 gdb 程序名 p 进程号 3 gdb运行 输入attach 进程号 2 查看变量 1 p 变量名 2 p 10x 变量名 3
  • JSON语法及JSON定义规范化

    一 前言 JSON JavaScript Object Notation JS对象标记 是一种轻量级的数据交换格式 它是基于 ECMAScript 的一个子集 采用完全独立于编程语言的文本格式来存储和表示数据 二 JSON 语法规则 在 J
  • Phoneme的相关概念以及Triphone

    Phoneme的相关概念以及Triphone 目录 Phoneme的相关概念以及Triphone 前言 可用来训练HMM的基本单位 1 词 words 3 单音 syllables 4 音素 phonemes 5 Triphone 中文 基
  • Android App完全退出方式

    第一种方式是创建一个MyApplication类 继承Application 在AndroidManifest xml的application标签配置android name 并在其中加入一个 List