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)

  • 相关阅读:
    懂一点Python系列——快速入门
    DatagridView 控件列顺序与设置的不一样
    WinForm Column cannot be added because its CellType property is null.
    Rabbitmq消息服务器通讯异常: name must not be blank
    Redis 数据库
    redis 安装与使用
    windows 服务的安装与卸载之bat脚本命令
    以超级管理员方式运行bat文件
    CMD 下切换目录
    C#导出Excel后关闭进程EXCEL.EXE
  • 原文地址:https://www.cnblogs.com/tilmto/p/9384259.html
Copyright © 2011-2022 走看看