Page Ability生命週期內容介紹!

千鋒武漢發表於2021-07-26

      今天我們就來給大家介紹一下Page Ability生命週期相關內容,同學們記得帶好小本本。

      Page Ability生命週期

      系統管理或使用者操作等行為均會引起Page例項在其生命週期的不同狀態之間進行轉換。Ability類提供的回撥機制能夠讓Page及時感知外界變化,從而正確地應對狀態變化(比如釋放資源),這有助於提升應用的效能和穩健性。

      Page生命週期回撥

      Page生命週期的不同狀態轉換及其對應的回撥,如圖所示

千鋒IT培訓鴻蒙教程1

      Page生命週期和狀態會經歷以下這些過程:

      onStart()初始化(INITIAL):當系統首次建立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的銷燬。

      如何測試Page Ability的生命週期呢?主要是看Page Ability和AbilitySlice之間的生命週期狀態是如何切換的。我們用以下程式碼來測試一下。

      MainAbility程式碼:

千鋒IT培訓鴻蒙教程2

      MainAbilitySlice程式碼:

千鋒IT培訓鴻蒙教程3

      以上就是這一期的鴻蒙開發教程了,下一期我們繼續介紹一下AbilitySlice之間的回傳值,感興趣的同學記得關注一下。

       本文來自千鋒教育,轉載請註明出處。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31548651/viewspace-2782887/,如需轉載,請註明出處,否則將追究法律責任。

相關文章