【Android 应用开发】Activity 返回堆栈清除操作 ( 默认状态 | 清除返回堆栈配置 | 不清除返回堆栈配置 | 清除指定界面配置 )

简介: 【Android 应用开发】Activity 返回堆栈清除操作 ( 默认状态 | 清除返回堆栈配置 | 不清除返回堆栈配置 | 清除指定界面配置 )

文章目录

I . 返回堆栈 默认操作

II . 返回堆栈 保留所有元素操作

III . 返回堆栈 清除除根元素外所有元素操作

IV . 返回堆栈 清除指定的 Activity

V . 总结



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"


目录
相关文章
|
1月前
|
Android开发
Android面试之Activity启动流程简述
Android面试之Activity启动流程简述
78 6
|
1月前
|
消息中间件 Android开发 索引
Android面试高频知识点(4) 详解Activity的启动流程
Android面试高频知识点(4) 详解Activity的启动流程
27 3
|
1月前
|
缓存 前端开发 Android开发
Android实战之如何截取Activity或者Fragment的内容?
本文首发于公众号“AntDream”,介绍了如何在Android中截取Activity或Fragment的屏幕内容并保存为图片。包括截取整个Activity、特定控件或区域的方法,以及处理包含RecyclerView的复杂情况。
19 3
|
1月前
|
编译器 Android开发
配置环境变量,使CMakeLists.txt可直接使用Android NDK工具链编译项目
配置环境变量,使CMakeLists.txt可直接使用Android NDK工具链编译项目
|
1月前
|
XML 数据可视化 Android开发
Android应用界面
Android应用界面中的布局和控件使用,包括相对布局、线性布局、表格布局、帧布局、扁平化布局等,以及AdapterView及其子类如ListView的使用方法和Adapter接口的应用。
25 0
Android应用界面
|
1月前
|
Java Android开发 Windows
玩转安卓之配置gradle-8.2.1
为安卓开发配置Gradle 8.2.1,包括下载和解压Gradle、配置环境变量、修改配置文件以增加国内镜像,以及在Android Studio中配置Gradle和JDK的过程。
84 0
玩转安卓之配置gradle-8.2.1
|
1月前
|
Android开发
Android面试之Activity启动流程简述
Android面试之Activity启动流程简述
18 0
|
2月前
|
Android开发 开发者
Android面试之Activity启动流程简述
每个Android开发者都熟悉的Activity,但你是否了解它的启动流程呢?本文将带你深入了解。启动流程涉及四个关键角色:Launcher进程、SystemServer的AMS、应用程序的ActivityThread及Zygote进程。核心在于AMS与ActivityThread间的通信。文章详细解析了从Launcher启动Activity的过程,包括通过AIDL获取AMS、Zygote进程启动以及ActivityThread与AMS的通信机制。接着介绍了如何创建Application及Activity的具体步骤。整体流程清晰明了,帮助你更深入理解Activity的工作原理。
53 0
|
XML 数据可视化 Java
Android常见界面布局(详细介绍)
Android常见界面布局(详细介绍)
475 0
Android常见界面布局(详细介绍)
|
Android开发
Android笔记:软键盘弹出遮盖原来界面的布局控件
Android笔记:软键盘弹出遮盖原来界面的布局控件
179 0