Harmony鸿蒙开发 四、Ability的生命周期
1、Ability的分類
HarmonyOS支持應(yīng)用以Ability(一個(gè)或多個(gè))為單位進(jìn)行部署。Ability可以分為FA(Feature Ability)和PA(Particle Ability)兩種類型:
-
FA支持Page Ability:
Page模板是FA唯一支持的模板,用于提供與用戶交互的能力。類似于android的Activity。一個(gè)Page實(shí)例可以包含一組相關(guān)頁面,每個(gè)頁面用一個(gè)AbilitySlice實(shí)例表示。 -
PA支持Service Ability和Data Ability:
- Service模板:用于提供后臺(tái)運(yùn)行任務(wù)的能力。
- Data模板:用于對(duì)外部提供統(tǒng)一的數(shù)據(jù)訪問抽象。
2、Ability的生命周期
三種Ability的生命周期相似。我們這里以Page Ability為例:
-
onStart()
當(dāng)系統(tǒng)首次創(chuàng)建Page實(shí)例時(shí),觸發(fā)該回調(diào)。對(duì)于一個(gè)Page實(shí)例,該回調(diào)在其生命周期過程中僅觸發(fā)一次,Page在該邏輯后將進(jìn)入INACTIVE狀態(tài)。開發(fā)者必須重寫該方法,并在此配置默認(rèn)展示的AbilitySlice。 -
onActive()
Page會(huì)在進(jìn)入INACTIVE狀態(tài)后來到前臺(tái),然后系統(tǒng)調(diào)用此回調(diào)。Page在此之后進(jìn)入ACTIVE狀態(tài),該狀態(tài)是應(yīng)用與用戶交互的狀態(tài)。Page將保持在此狀態(tài),除非某類事件發(fā)生導(dǎo)致Page失去焦點(diǎn),比如用戶點(diǎn)擊返回鍵或?qū)Ш降狡渌鸓age。當(dāng)此類事件發(fā)生時(shí),會(huì)觸發(fā)Page回到INACTIVE狀態(tài),系統(tǒng)將調(diào)用onInactive()回調(diào)。此后,Page可能重新回到ACTIVE狀態(tài),系統(tǒng)將再次調(diào)用onActive()回調(diào)。因此,開發(fā)者通常需要成對(duì)實(shí)現(xiàn)onActive()和onInactive(),并在onActive()中獲取在onInactive()中被釋放的資源。 -
onInactive()
當(dāng)Page失去焦點(diǎn)時(shí),系統(tǒng)將調(diào)用此回調(diào),此后Page進(jìn)入INACTIVE狀態(tài)。開發(fā)者可以在此回調(diào)中實(shí)現(xiàn)Page失去焦點(diǎn)時(shí)應(yīng)表現(xiàn)的恰當(dāng)行為。 -
onBackground()
如果Page不再對(duì)用戶可見,系統(tǒng)將調(diào)用此回調(diào)通知開發(fā)者用戶進(jìn)行相應(yīng)的資源釋放,此后Page進(jìn)入BACKGROUND狀態(tài)。開發(fā)者應(yīng)該在此回調(diào)中釋放Page不可見時(shí)無用的資源,或在此回調(diào)中執(zhí)行較為耗時(shí)的狀態(tài)保存操作。 -
onForeground()
處于BACKGROUND狀態(tài)的Page仍然駐留在內(nèi)存中,當(dāng)重新回到前臺(tái)時(shí)(比如用戶重新導(dǎo)航到此Page),系統(tǒng)將先調(diào)用onForeground()回調(diào)通知開發(fā)者,而后Page的生命周期狀態(tài)回到INACTIVE狀態(tài)。開發(fā)者應(yīng)當(dāng)在此回調(diào)中重新申請(qǐng)?jiān)趏nBackground()中釋放的資源,最后Page的生命周期狀態(tài)進(jìn)一步回到ACTIVE狀態(tài),系統(tǒng)將通過onActive()回調(diào)通知開發(fā)者用戶。 -
onStop()
系統(tǒng)將要銷毀Page時(shí),將會(huì)觸發(fā)此回調(diào)函數(shù),通知用戶進(jìn)行系統(tǒng)資源的釋放。銷毀Page的可能原因包括以下幾個(gè)方面:
- 用戶通過系統(tǒng)管理能力關(guān)閉指定Page,例如使用任務(wù)管理器關(guān)閉Page。
- 用戶行為觸發(fā)Page的terminateAbility()方法調(diào)用,例如使用應(yīng)用的退出功能。
- 配置變更導(dǎo)致系統(tǒng)暫時(shí)銷毀Page并重建。
- 系統(tǒng)出于資源管理目的,自動(dòng)觸發(fā)對(duì)處于BACKGROUND狀態(tài)Page的銷毀。
注意:
3、AbilitySlice生命周期
4、Service Ability和Data Ability的生命周期
參考:https://developer.harmonyos.com/cn/docs/documentation/doc-guides/ability-service-lifecycle-0000000000044472
總結(jié)
以上是生活随笔為你收集整理的Harmony鸿蒙开发 四、Ability的生命周期的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Android Activity
- 下一篇: 酒店管理开发