【Android 应用开发】Activity 返回堆栈清除操作 ( 默认状态 | 清除返回堆栈配置 | 不清除返回堆栈配置 | 清除指定界面配置 )
文章目錄
- I . 返回堆棧 默認操作
- II . 返回堆棧 保留所有元素操作
- III . 返回堆棧 清除除根元素外所有元素操作
- IV . 返回堆棧 清除指定的 Activity
- V . 總結(jié)
I . 返回堆棧 默認操作
任務進入后臺 然后 恢復前臺運行 返回堆棧 的 默認處理機制 :
① 長時間掛起任務 : 如果任務長時間在后臺掛起 , 系統(tǒng)會清除 該任務返回堆棧中除 根 Activity ( 棧底元素 ) 之外的其它 Activity 界面 ;
② 短時間掛起后立刻返回 : 如果任務只是短時間進入后臺 , 那么任務中所有的 Activity 都會保留 ;
是否保留任務的返回堆棧 , 依據(jù)是 任務進入后臺的 時間 長短 , 這個時間是一個不確定的值 , 由系統(tǒng)決定 ;
( 參考時間 : 30 分鐘 )
如果開發(fā)者不做額外設置 , 那么就會按照上述情況進行默認處理 ;
II . 返回堆棧 保留所有元素操作
上面講解了默認狀態(tài)下 , 任務進入后臺的處理機制 , 如果不想任務中的返回堆棧被清空 , 那么可以設置 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 . 返回堆棧 清除除根元素外所有元素操作
上面講解了默認狀態(tài)設置 , 任務必須保留狀態(tài)設置 , 還剩下一個 任務必須 清空 除 根元素之外的所有元素 的設置 , 即 android:clearTaskOnLaunch 配置 ;
1 . 設置 android:clearTaskOnLaunch 屬性為 true 效果 : 只要任務進入后臺 , 再次返回時 , 哪怕是瞬間返回 , 返回堆棧只剩下根元素 , 其它元素全部被清空 ;
<activity android:name=".MainActivity"android:clearTaskOnLaunch ="true"/>2 . android:clearTaskOnLaunch 屬性 默認值 : 該屬性值默認為 false , 即默認情況下 任務進入后臺 , 短時間內(nèi)回到前臺 不會清空 返回堆棧中的元素 ;
3 . android:clearTaskOnLaunch 屬性設置起作用的前提條件 : 只有 根 Activity 的該屬性設置是有效的 , 其它 Activity 的即使設置了該屬性 , 也是無效的 ;
該設置與 android:alwaysRetainTaskState 設置相反 ;
IV . 返回堆棧 清除指定的 Activity
上面的三種配置都是針對 根 Activity 進行操作 , 下面我們討論針對指定的 Activity 進行配置 ;
設置 android:finishOnTaskLaunch = “true” 效果 :
① 作用范圍 : 該設置只針對單個 Activity 起作用 , 并不是針對整個返回堆棧設置的 ;
② 作用效果 : 當任務從后臺返回前臺運行時 , 如果該配置設置 “true” , 那么該任務中的 Activity 界面就會消失 ;
③ 優(yōu)先級 : 該配置的優(yōu)先級略高 , 當 android:allowTaskReparenting 屬性 與 該屬性同時配置時 , 如果該界面的任務進入前臺 , 不會將該界面重新分配
關于 android:allowTaskReparenting 屬性 , 在講解親和性那一章博客有詳細說明 :
【Android 應用開發(fā)】Activity 任務親和性 taskAffinity 設置 ( taskAffinity 屬性 )
V . 總結(jié)
返回堆棧清除管理 總結(jié) :
① 默認狀態(tài)下 : 任務進入后臺 , 如果超過一定時間 , 就會清除除根 Activity 之外的其它元素 , 短時間內(nèi)進入前臺 , 會恢復完整的返回堆棧 ;
② 任務進入后臺 , 必須清除返回堆棧配置 : android:clearTaskOnLaunch =“true” ;
③ 任務進入后臺 , 必須不能清除返回堆棧配置 : android:alwaysRetainTaskState = “true” ;
④ 任務進入后臺 , 清除指定的 Activity 實例 : android:finishOnTaskLaunch = "true"
《新程序員》:云原生和全面數(shù)字化實踐50位技術專家共同創(chuàng)作,文字、視頻、音頻交互閱讀總結(jié)
以上是生活随笔為你收集整理的【Android 应用开发】Activity 返回堆栈清除操作 ( 默认状态 | 清除返回堆栈配置 | 不清除返回堆栈配置 | 清除指定界面配置 )的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【Android 应用开发】Activi
- 下一篇: 【C++ 语言】智能指针 引入 ( 内存