【Android 应用开发】Activity 返回堆栈清除操作 ( 默认状态 | 清除返回堆栈配置 | 不清除返回堆栈配置 | 清除指定界面配置 )
文章目录
I . 返回堆栈 默认操作
任务进入后台 然后 恢复前台运行 返回堆栈 的 默认处理机制 :
① 长时间挂起任务 : 如果任务长时间在后台挂起 , 系统会清除 该任务返回堆栈中除 根 Activity ( 栈底元素 ) 之外的其它 Activity 界面 ;
② 短时间挂起后立刻返回 : 如果任务只是短时间进入后台 , 那么任务中所有的 Activity 都会保留 ;
是否保留任务的返回堆栈 , 依据是 任务进入后台的 时间 长短 , 这个时间是一个不确定的值 , 由系统决定 ;
( 参考时间 : 30 分钟 )
如果开发者不做额外设置 , 那么就会按照上述情况进行默认处理 ;
II . 返回堆栈 保留所有元素操作
上面讲解了默认状态下 , 任务进入后台的处理机制 , 如果不想任务中的返回堆栈被清空 , 那么可以设置 android:alwaysRetainTaskState 属性 , 可以保留返回堆栈的信息 ;
1 . 设置 android:alwaysRetainTaskState 属性为 true 效果 : 不管 任务在后台挂起多长时间 , 返回堆栈都会保留所有的 Activity ;
<activity android:name=".MainActivity"
android:alwaysRetainTaskState="true"/>
2 . android:alwaysRetainTaskState 属性 默认值 : 该属性值默认为 false , 即默认情况下 任务处于后台一段时间 , 会被清除 根 Activity 之外的其它元素 ;
3 . android:alwaysRetainTaskState 属性设置起作用的前提条件 : 只有 根 Activity 的该属性设置是有效的 , 其它 Activity 的即使设置了该属性 , 也是无效的 ;
III . 返回堆栈 清除除根元素外所有元素操作
上面讲解了默认状态设置 , 任务必须保留状态设置 , 还剩下一个 任务必须 清空 除 根元素之外的所有元素 的设置 , 即 android:clearTaskOnLaunch 配置 ;
1 . 设置 android:clearTaskOnLaunch 属性为 true 效果 : 只要任务进入后台 , 再次返回时 , 哪怕是瞬间返回 , 返回堆栈只剩下根元素 , 其它元素全部被清空 ;
<activity android:name=".MainActivity"
android:clearTaskOnLaunch ="true"/>
2 . android:clearTaskOnLaunch 属性 默认值 : 该属性值默认为 false , 即默认情况下 任务进入后台 , 短时间内回到前台 不会清空 返回堆栈中的元素 ;
3 . android:clearTaskOnLaunch 属性设置起作用的前提条件 : 只有 根 Activity 的该属性设置是有效的 , 其它 Activity 的即使设置了该属性 , 也是无效的 ;
该设置与 android:alwaysRetainTaskState 设置相反 ;
IV . 返回堆栈 清除指定的 Activity
上面的三种配置都是针对 根 Activity 进行操作 , 下面我们讨论针对指定的 Activity 进行配置 ;
设置 android:finishOnTaskLaunch = “true” 效果 :
① 作用范围 : 该设置只针对单个 Activity 起作用 , 并不是针对整个返回堆栈设置的 ;
② 作用效果 : 当任务从后台返回前台运行时 , 如果该配置设置 “true” , 那么该任务中的 Activity 界面就会消失 ;
③ 优先级 : 该配置的优先级略高 , 当 android:allowTaskReparenting 属性 与 该属性同时配置时 , 如果该界面的任务进入前台 , 不会将该界面重新分配
关于 android:allowTaskReparenting 属性 , 在讲解亲和性那一章博客有详细说明 : 【Android 应用开发】Activity 任务亲和性 taskAffinity 设置 ( taskAffinity 属性 )
V . 总结
返回堆栈清除管理 总结 :
① 默认状态下 : 任务进入后台 , 如果超过一定时间 , 就会清除除根 Activity 之外的其它元素 , 短时间内进入前台 , 会恢复完整的返回堆栈 ;
② 任务进入后台 , 必须清除返回堆栈配置 : android:clearTaskOnLaunch =“true” ;
③ 任务进入后台 , 必须不能清除返回堆栈配置 : android:alwaysRetainTaskState = “true” ;
④ 任务进入后台 , 清除指定的 Activity 实例 : android:finishOnTaskLaunch = "true"
相关文章
- Qt5.12配置Android环境 只有platform sdk installed error的解决办法「建议收藏」
- strictmode android,Android 应用性能优化-StrictMode(严格模式)
- android onresume方法,Android onActivityResult()和onResume()的执行顺序
- strictmode android,(十三)Android 性能优化 StrictMode
- android activity singletask,Android Activity启动模式之singleTask实例详解
- android 安装p12证书,如何在Android中使用p12证书(客户端证书)
- android 自定义控件 使用declare-styleable进行配置属性(源码角度)「建议收藏」
- android vlc 中文字幕,解决Android版vlc中文乱码问题
- Android游戏引擎_巨星引擎网络公司
- Android修改字体_android设置字体样式
- Android SDK Tools_android.intent.category.DEFAULT
- android 系统浏览器 源码-Android 最最最简单的浏览器代码
- 【Android NDK 开发】Android Studio 使用 CMake 导入静态库 ( CMake 简介 | 构建脚本路径配置 | 引入静态库 | 指定静态库路径 | 链接动态库 )
- 【Android 安装包优化】动态库打包配置 ( “armeabi-v7a“, “arm64-v8a“, “x86“, “x86_64“ APK 打包 CPU 指令集配置 | NDK 完整配置参考 )
- 【Android 事件分发】事件分发源码分析 ( ViewGroup 事件传递机制 三 )
- 【错误记录】编译 Android 版本的 ijkplayer 报错 ( ./init-android.sh: 第 37 行: cd: android/contrib/: 没有那个文件或目录 )
- 【Android Gradle 插件】LintOptions 配置 ① ( BaseExtension#lintOptions 配置 | LintOptions 配置简介 | lint 工具 )
- 【Android Gradle 插件】TestOptions 配置 ⑤ ( Test 单元测试配置类 | 设置包含或排除单元测试 | 设置堆大小 | 设置测试前后执行的逻辑 )
- 【Android Gradle 插件】Gradle 依赖管理 ⑨ ( implementation project 导入依赖库 Module | 导入aar文件作为依赖 | 先配置仓库再导入依赖 )
- 【Android 应用开发】使用蒲公英 SDK 收集崩溃日志信息 ( 导入依赖 | 申请 Key | 集成代码 | 清单文件配置 | 手动上传日志 | 手动检查更新 )
- 【Android NDK 开发】CMake 中查找链接 Android 自带动态库位置说明 ( ndk-bundleplatformsandroid-29arch-armusrlib )
- 【错误记录】Android Studio 编译报错 ( Could not resolve com.android.tools.build:gradle:7.4.2. )
- Android方法数methods超过65536详解手机开发
- Android动画深入分析详解手机开发