鴻蒙系統(tǒng)作為華為自主研發(fā)的操作系統(tǒng),一經(jīng)推出就受到了不少的關(guān)注,而小千也為大家經(jīng)理準(zhǔn)備了鴻蒙開發(fā)的一系列教程,今天我們就來給大家介紹一下Page Ability生命周期相關(guān)內(nèi)容,同學(xué)們記得帶好小本本。
Page Ability生命周期
系統(tǒng)管理或用戶操作等行為均會(huì)引起Page實(shí)例在其生命周期的不同狀態(tài)之間進(jìn)行轉(zhuǎn)換。Ability類提供的回調(diào)機(jī)制能夠讓Page及時(shí)感知外界變化,從而正確地應(yīng)對狀態(tài)變化(比如釋放資源),這有助于提升應(yīng)用的性能和穩(wěn)健性。
Page生命周期回調(diào)
Page生命周期的不同狀態(tài)轉(zhuǎn)換及其對應(yīng)的回調(diào),如圖所示
IT培訓(xùn)鴻蒙教程1" />
Page生命周期和狀態(tài)會(huì)經(jīng)歷以下這些過程:
onStart()初始化(INITIAL):當(dāng)系統(tǒng)首次創(chuàng)建Page實(shí)例時(shí),觸發(fā)該回調(diào),對于一個(gè)Page實(shí)例,該回調(diào)在其生命周期過程中僅僅觸發(fā)一次,Page在該邏輯后進(jìn)入INACTIVE(不活動(dòng)的)狀態(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ā)者通常需要成對實(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不再對用戶可見,系統(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)中重新申請?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ā)對處于BACKGROUND狀態(tài)Page的銷毀。
如何測試Page Ability的生命周期呢?主要是看Page Ability和AbilitySlice之間的生命周期狀態(tài)是如何切換的。我們用以下代碼來測試一下。
MainAbility代碼:
MainAbilitySlice代碼:
以上就是這一期的鴻蒙開發(fā)教程了,下一期我們繼續(xù)介紹一下AbilitySlice之間的回傳值,感興趣的同學(xué)記得關(guān)注一下。