頁面棧及任務(wù)鏈
頁面棧
單個UIAbility組件可以實(shí)現(xiàn)多個頁面,并在多個頁面之間跳轉(zhuǎn),這種UIAbility組件內(nèi)部的頁面跳轉(zhuǎn)關(guān)系稱為“頁面?!?,由ArkUI框架統(tǒng)一管理,如下圖中的UIAbility1的Page1->Page2->Page3和UIAbility2的PageA->PageB->PageC。
圖1 頁面棧示意圖
- 頁面棧的形成(下面2/3/5/6步驟為頁面跳轉(zhuǎn),由ArkUI管理)
- 點(diǎn)擊桌面圖標(biāo)([startAbility])啟動UIAbility1,UIAbility1的初始頁面為Page1。
- 點(diǎn)擊Page1頁面按鈕([Navigator])跳轉(zhuǎn)到Page2頁面。
- 點(diǎn)擊Page2頁面按鈕([Navigator])跳轉(zhuǎn)到Page3頁面。
- 點(diǎn)擊Page3頁面按鈕([startAbility])跳轉(zhuǎn)到UIAbility2,UIAbility2的初始頁面為PageA。
- 點(diǎn)擊PageA頁面按鈕([Navigator])跳轉(zhuǎn)到PageB頁面。
- 點(diǎn)擊PageB頁面按鈕([Navigator])跳轉(zhuǎn)到PageC頁面。
- 頁面棧的返回(下面1/2/4/5步驟為頁面跳轉(zhuǎn),由ArkUI管理)
- 在UIAbility2的PageC頁面點(diǎn)擊返回鍵回到UIAbility2的PageB頁面。
- 在UIAbility2的PageB頁面點(diǎn)擊返回鍵回到UIAbility2的PageA頁面。
- 在UIAbility2的PageA頁面點(diǎn)擊返回鍵跳轉(zhuǎn)到UIAbility1的Page3頁面。
- 在UIAbility1的Page3頁面點(diǎn)擊返回鍵回到UIAbility1的Page2頁面。
- 在UIAbility1的Page2頁面點(diǎn)擊返回鍵回到UIAbility1的Page1頁面。
- 在UIAbility1的Page1頁面點(diǎn)擊返回鍵回到桌面。
- 開發(fā)前請熟悉鴻蒙開發(fā)指導(dǎo)文檔 :[
gitee.com/li-shizhen-skin/harmony-os/blob/master/README.md
]
任務(wù)鏈
上文介紹了頁面棧的返回,如果Ability2頁面棧一層層通過返回鍵返回到最底層,再次點(diǎn)擊返回鍵時,會返回到Ability1。因?yàn)樵贛issionList中記錄了任務(wù)(Mission)之間的啟動關(guān)系,即如果Ability1通過startAbility啟動Ability2,則會形成一個MissionList任務(wù)鏈:Ability1->Ability2,當(dāng)Ability2頁面棧返回到首頁時,再次點(diǎn)擊返回鍵,會返回到Ability1的頁面。
MissionList任務(wù)鏈記錄了任務(wù)之間的拉起關(guān)系,但是這個任務(wù)鏈可能會斷開,有以下幾種情況會導(dǎo)致任務(wù)鏈的斷開:
- 進(jìn)入任務(wù)列表,把任務(wù)鏈中間某個任務(wù)移動到前臺。
- 進(jìn)入任務(wù)列表,把任務(wù)鏈中間某個任務(wù)清理掉。
- 單實(shí)例UIAbility的任務(wù),被不同的任務(wù)(包括Ability或桌面)反復(fù)拉起(AbilityB為單例)。
審核編輯 黃宇
聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。
舉報投訴
相關(guān)推薦
從分析中,我們需要明白的一個重要問題就是,當(dāng)客戶按返回按鈕的時候究竟會跳轉(zhuǎn)到那個界面,這是我們分析頁面棧變化的的意義。
發(fā)表于 11-04 13:55
?3501次閱讀
簡介明了帶你了解嵌入式RTOS的 任務(wù)棧 和 系統(tǒng)棧
發(fā)表于 05-16 09:57
?2981次閱讀
本示例展示了設(shè)置應(yīng)用的典型頁面,其在小窗口和大窗口有不同的顯示效果,體現(xiàn)一次開發(fā)、多端部署的能力。
發(fā)表于 05-27 09:36
?1064次閱讀
Android的道路的,好比現(xiàn)在的小米澎湃系統(tǒng)亦是如此。
而作為國家主推的鴻蒙系統(tǒng),現(xiàn)在展現(xiàn)出未來大好的局面。先后推出4.0、星河版。其中最新星河版已經(jīng)全面對開發(fā)者開發(fā)申請。
1、鴻蒙
發(fā)表于 02-16 22:03
,主頁內(nèi)存占用增加,加載時間變長。此時改用動態(tài)加載不再提前加載子頁面,可以有效地避免這些任務(wù)阻塞主線程,從而降低整體資源消耗,提高主頁的加載速度。
最后
如果大家覺得這篇內(nèi)容對學(xué)習(xí)鴻蒙開發(fā)
發(fā)表于 05-10 20:52
服務(wù)過程中,如果遇到卡頓、加載耗時等性能問題,開發(fā)者通常會關(guān)注相關(guān)函數(shù)執(zhí)行的耗時情況。Profiler提供的Time場景分析任務(wù),可在應(yīng)用/服務(wù)運(yùn)行時,展示熱點(diǎn)區(qū)域內(nèi)基于CPU和進(jìn)程耗時分析的調(diào)用棧
發(fā)表于 05-11 14:13
開發(fā)者可以通過鴻蒙輕應(yīng)用,通過點(diǎn)擊關(guān)鍵詞解鎖詳細(xì)解釋的方式,方便快速第了解鴻蒙的基礎(chǔ)術(shù)語??梢元?dú)立作為一個應(yīng)用發(fā)展,也可以作為各種應(yīng)用中的一個模塊。適合HarmonyOS開發(fā)者及潛在
發(fā)表于 05-19 18:33
使用FreeRTOS開發(fā)應(yīng)用時,多任務(wù)調(diào)度器啟動后,由于每個任務(wù)都有獨(dú)立的堆??臻g,C啟動堆棧不再使用,使嵌入式應(yīng)用中可用的RAM量減少。如何重用這段RAM空間?棧空間的重用需要利用處
發(fā)表于 12-17 15:59
的開發(fā)難度!贊!2、鴻蒙應(yīng)用開發(fā)入門資料二:開發(fā)環(huán)境搭建下載HarmonyOS SDK DevEco Studio提供SDK Manager統(tǒng)一管理SDK和這個包依賴的工具
發(fā)表于 03-22 11:23
的操作系統(tǒng)平臺和開發(fā)框架。HarmonyOS 的目標(biāo)是實(shí)現(xiàn)跨設(shè)備的無縫協(xié)同和高性能。
DevEco Studio
對標(biāo) Android Studio,開發(fā)鴻蒙 OS 應(yīng)用的 IDE。
啟動
發(fā)表于 11-02 19:38
router.back():返回上一頁面或指定頁面。
router.clear():清空頁面棧中的所有歷史頁面,僅保留當(dāng)前
發(fā)表于 11-15 10:11
ArcBlock 區(qū)塊基石[1]肩負(fù)這樣一項(xiàng)使命:大大簡化區(qū)塊鏈技術(shù)并將其迅速應(yīng)用于日常生活之中。為此,他們開發(fā)了一個區(qū)塊鏈全棧開發(fā)平臺,為
發(fā)表于 11-22 10:39
?1188次閱讀
上面的代碼和鴻蒙內(nèi)核用棧方式一樣,都采用了遞減滿棧的方式, 什么是遞減滿棧?
發(fā)表于 04-24 11:21
?1411次閱讀
棧是一種后進(jìn)先出的數(shù)據(jù)結(jié)構(gòu),棧的實(shí)現(xiàn)方式主要有2種,順序棧和鏈棧。
發(fā)表于 06-15 10:50
?3093次閱讀
應(yīng)用開發(fā)至少包含兩部分工作: UI頁面開發(fā)和底層功能開發(fā)(部分需要聯(lián)網(wǎng)的應(yīng)用還會涉及服務(wù)端開發(fā))。前面章節(jié)介紹了如何解決
發(fā)表于 05-28 17:32
?504次閱讀
評論