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)

  • 相关阅读:
    对象属性编辑器中实现像Size,Rectangle等可以展开的属性
    远程办公产品风口会不会把SOHO自由职业吹起来
    项目加
    推荐几款免费又好用的项目管理工具
    Sprint Retrospective
    敏捷管理的大概背景和Scrum的特性
    推荐几款最好用的项目管理系统,即好用又免费
    项目管理的需求变更问题
    敏捷管理有一个原则就是:拥抱变化
    推荐5款体验最好的项目管理工具
  • 原文地址:https://www.cnblogs.com/tilmto/p/9384259.html
Copyright © 2011-2022 走看看