zoukankan      html  css  js  c++  java
  • 对于一键退出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)

  • 相关阅读:
    概述反射和序列化
    读书笔记6pandas简单使用
    读书笔记5基于matplotlib画图
    读书笔记4数据的读入和保存
    读书笔记3数组的一些常用函数
    introduction to python for statistics,analysis笔记3
    introduction to python for statistics,analysis笔记2
    introduction to anaconda
    图像的线性空间滤波matlab实现
    C-I/O操作函数详解
  • 原文地址:https://www.cnblogs.com/tilmto/p/9384259.html
Copyright © 2011-2022 走看看