【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"


目录
相关文章
|
2月前
|
存储 XML 开发工具
探索安卓应用开发:从基础到进阶
在这篇文章中,我们将一起踏上安卓应用开发的旅程。不论你是编程新手还是希望提升技能的开发者,这里都有你需要的东西。我们会从最基础的概念开始,逐步深入到更复杂的主题。文章将涵盖开发环境设置、用户界面设计、数据处理以及性能优化等方面。通过理论与实践的结合,你将能够构建出既美观又高效的安卓应用。让我们一起开启这段技术之旅吧!
|
2月前
|
Android开发 Swift iOS开发
深入探索iOS与Android操作系统的架构差异及其对应用开发的影响
在当今数字化时代,移动设备已经成为我们日常生活和工作不可或缺的一部分。其中,iOS和Android作为全球最流行的两大移动操作系统,各自拥有独特的系统架构和设计理念。本文将深入探讨iOS与Android的系统架构差异,并分析这些差异如何影响应用开发者的开发策略和用户体验设计。通过对两者的比较,我们可以更好地理解它们各自的优势和局限性,从而为开发者提供有价值的见解,帮助他们在这两个平台上开发出更高效、更符合用户需求的应用。
|
1月前
|
搜索推荐 Android开发 开发者
安卓应用开发中的自定义控件实践
在安卓应用开发的广阔天地中,自定义控件如同璀璨的星辰,点亮了用户界面设计的夜空。它们不仅丰富了交互体验,更赋予了应用独特的个性。本文将带你领略自定义控件的魅力,从基础概念到实际应用,一步步揭示其背后的原理与技术细节。我们将通过一个简单的例子——打造一个具有独特动画效果的按钮,来展现自定义控件的强大功能和灵活性。无论你是初学者还是资深开发者,这篇文章都将为你打开一扇通往更高阶UI设计的大门。
|
2月前
|
缓存 监控 前端开发
探索Android应用开发之旅:从新手到专家
【10月更文挑战第42天】本文将带你踏上Android应用开发的旅程,无论你是初学者还是有经验的开发者。我们将一起探索如何从零开始创建你的第一个Android应用,并逐步深入到更高级的主题,如自定义视图、网络编程和性能优化。通过实际示例和清晰的解释,你将学会如何构建高效、吸引人的Android应用。让我们一起开启这段激动人心的旅程吧!
|
2月前
|
开发框架 前端开发 Android开发
探索安卓和iOS应用开发中的跨平台解决方案
【10月更文挑战第42天】在移动应用开发的广阔天地中,安卓和iOS系统如同两座巍峨的山峰,分别占据着半壁江山。开发者们在这两座山峰之间穿梭,努力寻找一种既能节省资源又能提高效率的跨平台开发方案。本文将带你走进跨平台开发的世界,探讨各种解决方案的优势与局限,并分享一些实用的代码示例,助你在应用开发的道路上更加游刃有余。
|
2月前
|
搜索推荐 前端开发 Android开发
安卓应用开发中的自定义视图实现
【10月更文挑战第30天】在安卓开发的海洋中,自定义视图是那抹不可或缺的亮色,它为应用界面的个性化和交互体验的提升提供了无限可能。本文将深入探讨如何在安卓平台创建自定义视图,并展示如何通过代码实现这一过程。我们将从基础出发,逐步引导你理解自定义视图的核心概念,然后通过一个实际的代码示例,详细讲解如何将理论应用于实践,最终实现一个美观且具有良好用户体验的自定义控件。无论你是想提高自己的开发技能,还是仅仅出于对安卓开发的兴趣,这篇文章都将为你提供价值。
|
2月前
|
前端开发 Android开发 UED
安卓应用开发中的自定义控件实践
【10月更文挑战第35天】在移动应用开发中,自定义控件是提升用户体验、增强界面表现力的重要手段。本文将通过一个安卓自定义控件的创建过程,展示如何从零开始构建一个具有交互功能的自定义视图。我们将探索关键概念和步骤,包括继承View类、处理测量与布局、绘制以及事件处理。最终,我们将实现一个简单的圆形进度条,并分析其性能优化。
|
30天前
|
搜索推荐 前端开发 API
探索安卓开发中的自定义视图:打造个性化用户界面
在安卓应用开发的广阔天地中,自定义视图是一块神奇的画布,让开发者能够突破标准控件的限制,绘制出独一无二的用户界面。本文将带你走进自定义视图的世界,从基础概念到实战技巧,逐步揭示如何在安卓平台上创建和运用自定义视图来提升用户体验。无论你是初学者还是有一定经验的开发者,这篇文章都将为你打开新的视野,让你的应用在众多同质化产品中脱颖而出。
53 19
|
30天前
|
JSON Java API
探索安卓开发:打造你的首个天气应用
在这篇技术指南中,我们将一起潜入安卓开发的海洋,学习如何从零开始构建一个简单的天气应用。通过这个实践项目,你将掌握安卓开发的核心概念、界面设计、网络编程以及数据解析等技能。无论你是初学者还是有一定基础的开发者,这篇文章都将为你提供一个清晰的路线图和实用的代码示例,帮助你在安卓开发的道路上迈出坚实的一步。让我们一起开始这段旅程,打造属于你自己的第一个安卓应用吧!
60 14