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