文章目录

  • 一、 安卓应用任务栈管理
  • 二、 任务与返回堆栈回顾
  • 三、 返回堆栈清除
  • 四、 关于亲和性回顾
  • 五、 Activity 启动模式 LaunchMode 补充 ( standard | singleTop )

一、 安卓应用任务栈管理


1 . 官网 activity 配置文档 : AndroidMainifest.xml 中 Activity 标签设置参考 , 详细地列出了 <activity /> 标签可以设置的 393939 个属性 , 有些不常用 , 与任务栈管理相关的有 666 个常用标签 ;

2 . 任务栈管理常用方法 : 在应用开发过程中 , 使用下面的 666 个标签属性 , 333 个 Intent 标志常量 , 即可应对大多数的开发任务 , 如果遇到比较刁钻的需求 , 再去详细阅读文档 , 查找解决方案 ;

① <activity /> 的 666 个常用标签属性 :

  • taskAffinity : 亲和性 ;
  • launchMode : 启动模式 ;
  • allowTaskReparenting
  • clearTaskOnLaunch
  • alwaysRetainTaskState
  • finishOnTaskLaunch

② 333 个常用的 Intent 常量 :

  • FLAG_ACTIVITY_NEW_TASK
  • FLAG_ACTIVITY_CLEAR_TOP
  • FLAG_ACTIVITY_SINGLE_TOP

二、 任务与返回堆栈回顾


在博客 【Android 应用开发】Android 返回堆栈 与 任务 中对 Android 中的任务与返回堆栈进行了简要说明 ;

任务就是 Activity 实例集合 , 返回堆栈就是存储这些 Activity 实例的数据结构 , 这两个概念可以一定程度上等同理解 , 一个任务对应一个返回堆栈 ;

三、 返回堆栈清除


【Android 应用开发】Activity 返回堆栈清除操作 ( 默认状态 | 清除返回堆栈配置 | 不清除返回堆栈配置 | 清除指定界面配置 ) 博客中讲解了清除返回堆栈的一系列设置 ;

任务栈清除控制 : 在任务栈转为后台后 , 在转回前台 , 任务栈的行为设置 ;

① 默认状态任务栈操作 : 默认状态下 , 后台的任务的返回堆栈过 30 分钟就会被清空只剩下根元素 ;

② 不去清空任务栈 : 设置 android:alwaysRetainTaskState 为 true , 则后台任务栈不会被清空 ;

③ 立即清空任务栈 : 设置 android:clearTaskOnLaunch 为 true , 只要应用进入后台 , 就会马上清空任务栈 ;

④ 界面返回清空 : 设置 Activity 的 android:finishOnTaskLaunch 为 true , 任务栈中如果有该 Activity 实例 , 就会清空

四、 关于亲和性回顾


【Android 应用开发】Activity 任务亲和性 taskAffinity 设置 ( taskAffinity 属性 ) 简单介绍了亲和性相关知识 ;

亲和性仅在两个应用场景生效 :

① 更改 Activity 所在的父任务 : 即设置 android:allowTaskReparenting 效果 ;

② 启动新任务 : 启动 Activity 界面时 , Intent 中设置了 FLAG_ACTIVITY_NEW_TASK 标志位 ;

五、 Activity 启动模式 LaunchMode 补充 ( standard | singleTop )


之前的博客 【Android 应用开发】Android 返回堆栈管理 ( 默认启动模式 | 栈顶复用启动模式 | 栈内复用启动模式 | 单实例启动模式 | CLEAR_TOP 标识 ) 中描述了 Activity 的四种启动模式 ;

分析 Activity 启动模式时 , 从 Activity 创建行为 , 和 返回堆栈 ( 前台 , 后台 ) 两个角度分析 444 种启动模式 ;

standard, singleTop , singleTask , singleInstance , 444 种启动模式 ;

仅讨论没有外部标志位干扰的情况 , 纯启动模式设置对应的 Activity 实例显示方式 ;

1 . 模式分组 :

① 常用启动模式 : 其中 standard , singleTop 是经常使用的 , 功能类似 ;

  • Activity 实例位置 : 上述两种启动模式的 Activity 可以放在任何堆栈的任何位置 ;
  • Activity 实例个数 : 上述两种启动模式的 Activity 在单个返回堆栈中可以存在多个 , 可以同时存在与多个返回堆栈 ;

② 特殊启动模式 : singleTask , singleInstance 一般情况下不使用 , 只有开发特殊 APP 时才用到这两个启动模式 ;

  • Activity 实例位置 : 上述两种启动模式的 Activity 只能处于返回堆栈根元素位置 , 只能在堆栈最下面 ;
  • Activity 实例个数 : 上述两种启动模式的 Activity 在应用中只能存在一个 ;

2 . standard 启动模式 :

① 关于任务栈操作 :

  • 不涉及任务栈操作 ( 一般情况 ) : 该启动模式不涉及任何任务栈操作 , 仅在当前任务栈中进行 Activity 实例的添加 ;
  • 特殊情况 : Intent 对象中设置了 FLAG_ACTIVITY_NEW_TASK 指令 , 就 涉及到任务栈的操作 ;

② 启动 Activity 方式 : 每创建一个 Activity 实例 , 都要将其放入当前的任务返回堆栈栈顶中 ;

③ Activity 实例与返回堆栈对应 : 因此在 多个返回堆栈中 , 可能存在多个 Activity 实例 , 每个返回堆栈中可能存在多个 Activity 实例 ;

3 . singleTop 启动模式 : 与 standard 启动模式基本相同 , 只有一点不同 , 就是启动 Activity 时 , 当前栈顶的 Activity 实例是否是要启动的 Activity 实例类型 , 分两种情况进行讨论 ;

① 返回堆栈栈顶不是要启动的 Activity : 如果要启动的 singleTop 启动模式的 Activity 实例 , 并不是当前栈顶的 Activity 实例 , 那么后续操作与 standard 模式相同 ;

② 返回堆栈栈顶就是要启动的 Activity : 如果当前栈顶的 Activity 就是要启动的 Activity 类型实例 , 那么会采用如下逻辑进行处理 ;

  • 栈顶复用 : 调用返回堆栈栈顶的 Activity 实例的 onNewIntent 方法 , 接收新的 Intent , 复用该 Activity 实例 ;
  • 注意 : 只有在栈顶才复用 , 如果 Activity 实例在返回堆栈的中间部位或底部 , 不能复用 , 直接创建新的 singleTop 启动模式 Activity 实例 , 放入返回堆栈 ;

单个返回堆栈中可以存在多个 standard 和 singleTop 启动模式的 Activity 实例 ;

【Android 应用开发】Activity 返回堆栈管理 ( 阶段总结 | 任务栈管理 | 返回堆栈 | 清除返回堆栈 | 亲和性 | 启动模式补充 | standard | singleTop )相关推荐

  1. Android四大组件 - Activity知识点总结

    Activity Activity是一个应用组件,用户可与其提供的屏幕进行交互,以执行拨打电话.拍摄照片.发送电子邮件或查看地图等操作. 每个 Activity 都会获得一个用于绘制其用户界面的窗口. ...

  2. Activity的4种启动模式

    2019独角兽企业重金招聘Python工程师标准>>> Activity共有四种启动模式,standard/singleTop/singleTask/singleInstance 在 ...

  3. 【Android 应用开发】Android 返回堆栈管理 ( 默认启动模式 | 栈顶复用启动模式 | 栈内复用启动模式 | 单实例启动模式 | CLEAR_TOP 标识 )

    文章目录 I . 默认启动模式 ( standard ) II . 栈顶复用启动模式 ( singleTop ) III . 栈内复用启动模式 ( singleTask ) IV . 单实例启动模式 ...

  4. android应用开发(24)---理解任务和返回堆栈

    理解任务和返回堆栈 任务是用户在执行某项工作时与之交互的一系列活动.这些活动排列在一个堆栈中 - 后台堆栈) - 按每个活动的打开顺序排列.例如,电子邮件应用程序可能有一个活动来显示新消息列表.当用户 ...

  5. activity 防止多次打开_Android开发Activity任务和返回栈

    任务是用户在执行某项工作时与之互动的一系列 Activity 的集合.这些 Activity 按照每个 Activity 打开的顺序排列在一个返回堆栈中.例如,电子邮件应用可能有一个 Activity ...

  6. Android正向开发(一) Activity

    Android 正向开发--Activity 活动(Activity)是什么 Activity的基本用法 创建活动 手动创建 Activity 界面相关 创建布局,添加按钮 加载布局 补:定义& ...

  7. Android开发艺术探索笔记(一) Activity的生命周期和启动模式(1)

    Activity作为Android开发中最常用的一个组件,是Android开发人员必须熟悉且掌握的重要内容.同时Activity也是在面试中经常被问到的一个方向.因此,掌握Activity的重要性也不 ...

  8. 【Android笔记】Activity的四种启动模式

    在多Activity开发中,有可能是自己应用之间的Activity跳转,或者夹带其他应用的可复用Activity. 可能会希望一个Activity跳转到原来某个Activity实例,而不是产生大量重复 ...

  9. Activity-的-36-大难点,你会几个?,android游戏开发实践指南

    1.8 Activity 的四种状态 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-UFcrVAzd-1636340687545)(//upload-images.ji ...

最新文章

  1. CV:计算机视觉基础之图像存储到计算机的原理daiding
  2. 再不用担心DataRow类型转换和空值了(使用扩展方法解决高频问题)
  3. 在 Angularjs 中 ui-sref 和 $state.go 如何传递参数
  4. java中的“”和null的区别
  5. android人物移动设计软件,实现在SurfaceView上移动游戏人物
  6. 魅族6支持html吗,魅族手机浏览器兼容性调优最佳实践_html/css_WEB-ITnose
  7. Linux程序安装创建桌面图标
  8. 只有极少数人能通过的「超级多任务」测试(文末附测试地址)
  9. golang fmt.printf()
  10. ijkplayer中遇到的问题汇总
  11. java多线程与并发之java并发编程实践
  12. python 关于sys.argv[1]语句报错IndexError: list index out of range的解决
  13. vue cli 脚手架 重新安装步骤
  14. html5 视差地图,用HTML5构建高性能视差网站的图文代码详解
  15. hive2.3.2+mysql5.7.21驱动包_2018-08-30期 Hive外部元数据库配置
  16. 前端下载图片的N种方法
  17. 营销策划方案示范文本
  18. 奔向光明阿波罗(上)
  19. 令夫妻关系和谐的五大秘诀
  20. 机智云配置(WIFI+stm32F103)

热门文章

  1. 微软发布 Mobile Express for Microsoft Dynamics CRM 4.0
  2. 说说JSON和JSONP,也许你会豁然开朗,含jQuery用例
  3. [2010国家集训队]Crash的旅游计划
  4. 多核服务器的JVM优化选项(转载)
  5. css 字体样式设置
  6. Android自定义EditText去除边框并添加下划线
  7. puppet完全攻略(一)puppet应用原理及安装部署
  8. js 字符串转成货币格式, js转货币
  9. Promise 解析
  10. jmeter 正则获取参数集合和ForEach控制器结合使用(转)