頁(yè)面棧及任務(wù)鏈
頁(yè)面棧
單個(gè)UIAbility組件可以實(shí)現(xiàn)多個(gè)頁(yè)面,并在多個(gè)頁(yè)面之間跳轉(zhuǎn),這種UIAbility組件內(nèi)部的頁(yè)面跳轉(zhuǎn)關(guān)系稱(chēng)為“頁(yè)面棧”,由ArkUI框架統(tǒng)一管理,如下圖中的UIAbility1的Page1->Page2->Page3和UIAbility2的PageA->PageB->PageC。
圖1 頁(yè)面棧示意圖
- 頁(yè)面棧的形成(下面2/3/5/6步驟為頁(yè)面跳轉(zhuǎn),由ArkUI管理)
- 點(diǎn)擊桌面圖標(biāo)([startAbility])啟動(dòng)UIAbility1,UIAbility1的初始頁(yè)面為Page1。
- 點(diǎn)擊Page1頁(yè)面按鈕([Navigator])跳轉(zhuǎn)到Page2頁(yè)面。
- 點(diǎn)擊Page2頁(yè)面按鈕([Navigator])跳轉(zhuǎn)到Page3頁(yè)面。
- 點(diǎn)擊Page3頁(yè)面按鈕([startAbility])跳轉(zhuǎn)到UIAbility2,UIAbility2的初始頁(yè)面為PageA。
- 點(diǎn)擊PageA頁(yè)面按鈕([Navigator])跳轉(zhuǎn)到PageB頁(yè)面。
- 點(diǎn)擊PageB頁(yè)面按鈕([Navigator])跳轉(zhuǎn)到PageC頁(yè)面。
- 頁(yè)面棧的返回(下面1/2/4/5步驟為頁(yè)面跳轉(zhuǎn),由ArkUI管理)
- 在UIAbility2的PageC頁(yè)面點(diǎn)擊返回鍵回到UIAbility2的PageB頁(yè)面。
- 在UIAbility2的PageB頁(yè)面點(diǎn)擊返回鍵回到UIAbility2的PageA頁(yè)面。
- 在UIAbility2的PageA頁(yè)面點(diǎn)擊返回鍵跳轉(zhuǎn)到UIAbility1的Page3頁(yè)面。
- 在UIAbility1的Page3頁(yè)面點(diǎn)擊返回鍵回到UIAbility1的Page2頁(yè)面。
- 在UIAbility1的Page2頁(yè)面點(diǎn)擊返回鍵回到UIAbility1的Page1頁(yè)面。
- 在UIAbility1的Page1頁(yè)面點(diǎn)擊返回鍵回到桌面。
- 開(kāi)發(fā)前請(qǐng)熟悉鴻蒙開(kāi)發(fā)指導(dǎo)文檔 :[
gitee.com/li-shizhen-skin/harmony-os/blob/master/README.md]
任務(wù)鏈
上文介紹了頁(yè)面棧的返回,如果Ability2頁(yè)面棧一層層通過(guò)返回鍵返回到最底層,再次點(diǎn)擊返回鍵時(shí),會(huì)返回到Ability1。因?yàn)樵贛issionList中記錄了任務(wù)(Mission)之間的啟動(dòng)關(guān)系,即如果Ability1通過(guò)startAbility啟動(dòng)Ability2,則會(huì)形成一個(gè)MissionList任務(wù)鏈:Ability1->Ability2,當(dāng)Ability2頁(yè)面棧返回到首頁(yè)時(shí),再次點(diǎn)擊返回鍵,會(huì)返回到Ability1的頁(yè)面。
MissionList任務(wù)鏈記錄了任務(wù)之間的拉起關(guān)系,但是這個(gè)任務(wù)鏈可能會(huì)斷開(kāi),有以下幾種情況會(huì)導(dǎo)致任務(wù)鏈的斷開(kāi):
- 進(jìn)入任務(wù)列表,把任務(wù)鏈中間某個(gè)任務(wù)移動(dòng)到前臺(tái)。

- 進(jìn)入任務(wù)列表,把任務(wù)鏈中間某個(gè)任務(wù)清理掉。

- 單實(shí)例UIAbility的任務(wù),被不同的任務(wù)(包括Ability或桌面)反復(fù)拉起(AbilityB為單例)。

審核編輯 黃宇
-
鴻蒙
+關(guān)注
關(guān)注
60文章
2963瀏覽量
45883
發(fā)布評(píng)論請(qǐng)先 登錄
小程序框架頁(yè)面棧設(shè)計(jì)案例解析
鴻蒙OS開(kāi)發(fā):典型頁(yè)面場(chǎng)景【一次開(kāi)發(fā),多端部署】實(shí)戰(zhàn)(設(shè)置典型頁(yè)面)
那些杠鴻蒙的現(xiàn)在怎么樣了?
純血鴻蒙開(kāi)發(fā)教程-運(yùn)行時(shí)動(dòng)態(tài)加載頁(yè)面提升性能
純血鴻蒙開(kāi)發(fā)教程-耗時(shí)分析器Time Profiler使用指導(dǎo)
鴻蒙原生頁(yè)面高性能解決方案上線OpenHarmony社區(qū) 助力打造高性能原生應(yīng)用
Get這個(gè)秘籍,鴻蒙原生應(yīng)用頁(yè)面滑動(dòng)絲滑無(wú)比
鴻蒙應(yīng)用開(kāi)發(fā)入門(mén)資料合集
鴻蒙 OS 應(yīng)用開(kāi)發(fā)初體驗(yàn)
鴻蒙原生應(yīng)用開(kāi)發(fā)-關(guān)于頁(yè)面接口router返回問(wèn)題與解決思路
什么是順序棧?什么又是鏈棧?
【HarmonyOS 5】鴻蒙頁(yè)面和組件生命周期函數(shù)
知乎開(kāi)源“智能預(yù)渲染框架” 幾行代碼實(shí)現(xiàn)鴻蒙應(yīng)用頁(yè)面“秒開(kāi)”
鴻蒙開(kāi)發(fā):【頁(yè)面棧及任務(wù)鏈】
評(píng)論