頁面棧及任務鏈
頁面棧
單個UIAbility組件可以實現多個頁面,并在多個頁面之間跳轉,這種UIAbility組件內部的頁面跳轉關系稱為“頁面棧”,由ArkUI框架統一管理,如下圖中的UIAbility1的Page1->Page2->Page3和UIAbility2的PageA->PageB->PageC。
圖1 頁面棧示意圖
- 頁面棧的形成(下面2/3/5/6步驟為頁面跳轉,由ArkUI管理)
- 點擊桌面圖標([startAbility])啟動UIAbility1,UIAbility1的初始頁面為Page1。
- 點擊Page1頁面按鈕([Navigator])跳轉到Page2頁面。
- 點擊Page2頁面按鈕([Navigator])跳轉到Page3頁面。
- 點擊Page3頁面按鈕([startAbility])跳轉到UIAbility2,UIAbility2的初始頁面為PageA。
- 點擊PageA頁面按鈕([Navigator])跳轉到PageB頁面。
- 點擊PageB頁面按鈕([Navigator])跳轉到PageC頁面。
- 頁面棧的返回(下面1/2/4/5步驟為頁面跳轉,由ArkUI管理)
- 在UIAbility2的PageC頁面點擊返回鍵回到UIAbility2的PageB頁面。
- 在UIAbility2的PageB頁面點擊返回鍵回到UIAbility2的PageA頁面。
- 在UIAbility2的PageA頁面點擊返回鍵跳轉到UIAbility1的Page3頁面。
- 在UIAbility1的Page3頁面點擊返回鍵回到UIAbility1的Page2頁面。
- 在UIAbility1的Page2頁面點擊返回鍵回到UIAbility1的Page1頁面。
- 在UIAbility1的Page1頁面點擊返回鍵回到桌面。
- 開發前請熟悉鴻蒙開發指導文檔 :[
gitee.com/li-shizhen-skin/harmony-os/blob/master/README.md
]
任務鏈
上文介紹了頁面棧的返回,如果Ability2頁面棧一層層通過返回鍵返回到最底層,再次點擊返回鍵時,會返回到Ability1。因為在MissionList中記錄了任務(Mission)之間的啟動關系,即如果Ability1通過startAbility啟動Ability2,則會形成一個MissionList任務鏈:Ability1->Ability2,當Ability2頁面棧返回到首頁時,再次點擊返回鍵,會返回到Ability1的頁面。
MissionList任務鏈記錄了任務之間的拉起關系,但是這個任務鏈可能會斷開,有以下幾種情況會導致任務鏈的斷開:
- 進入任務列表,把任務鏈中間某個任務移動到前臺。
- 進入任務列表,把任務鏈中間某個任務清理掉。
- 單實例UIAbility的任務,被不同的任務(包括Ability或桌面)反復拉起(AbilityB為單例)。
審核編輯 黃宇
-
鴻蒙
+關注
關注
59文章
2544瀏覽量
43841
發布評論請先 登錄
評論