• 对于一键退出APP功能实现的技术探讨


    在Android的开发过程中,会经常存在“一键退出APP”的需求。经过一段时间的整理,其主要实现方式有以下几种。

    本质:一键结束当前APP的所有activity&一键结束当前APP进程,两者合二为一才是真的结束。

    一、一键结束当前APP的所有activity的实现方式:

      1. 通过Android组件:activity

        (采用activity启动模式:singletask)

        优点:使用简单&方便

        缺点:

          (1)规定APP的入口activity采用singletask启动模式

          (2)使用范围局限:只能结束当前任务栈的activity,若出现多任务栈则无法处理。

     

        (采用activity启动标记位)

        优点:使用简单方便

        缺点:使用范围局限,只能结束当前任务栈的activity,若出现多任务栈则无法处理。

        (通过系统任务栈,通过activitymanager获取当前系统的任务栈&将栈内所有activity逐个退出)

     

      2. 通过Android组件broadcastreceiver(在每个activity里注册广播接收器(相应动作==关闭自身);当需要退出APP的时候,发送广播请求即可)

      优点:应用场景广泛:兼顾单/多任务栈&多启动模式状况

      缺点:实现复杂,需要在每个activity里注册广播接收器。

     

      3. 自身实现

        (创建链表,就是通过在application子类中建立一个activity链表;保存正在运行的activity实例;当需要一键退出APP时把链表中所有activity逐个退出即可。)

        优点:应用场景广泛,兼顾单/多任务栈&多启动模式的情况

        缺点:需要activity经历正常的生命周期,即创建时调用onCreate(),结束时调用onDestroy())

     

        (RxBus,使用rxbus当作事件总栈,在每个activity里注册rxbus订阅(响应动作==关闭自身);当需要退出APP的时候,发送退出事件请求即可)

        优点:可与RxJava结合

        缺点:实现复杂

    二、一键结束当前APP进程的实现方式:

      (采用dalvik本地方法),即在步骤一结束当前APP结束APP所有的activity后调用该方法即可一键退出APP)

  • 相关阅读:
    React 组件
    React JSX
    React基础
    equals和hashCode详解
    Hibernate 二级缓存配置
    如何正确地停止一个线程?
    常见的异常以及常用的包,类,及其接口。
    5.水果
    Java -- Web前端面试题及答案(需更深入了解)
    微信access_token请求之简单缓存方法封装
  • 原文地址:https://www.cnblogs.com/tilmto/p/9384259.html
Copyright © 2020-2023  润新知