对于一键退出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)

posted @ 2018-07-29 08:59  软件工程第六组  阅读(459)  评论(0编辑  收藏  举报