Page Ability生命週期內容介紹!
今天我們就來給大家介紹一下Page Ability生命週期相關內容,同學們記得帶好小本本。
Page Ability生命週期
系統管理或使用者操作等行為均會引起Page例項在其生命週期的不同狀態之間進行轉換。Ability類提供的回撥機制能夠讓Page及時感知外界變化,從而正確地應對狀態變化(比如釋放資源),這有助於提升應用的效能和穩健性。
Page生命週期回撥
Page生命週期的不同狀態轉換及其對應的回撥,如圖所示
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程式碼:
MainAbilitySlice程式碼:
以上就是這一期的鴻蒙開發教程了,下一期我們繼續介紹一下AbilitySlice之間的回傳值,感興趣的同學記得關注一下。
本文來自千鋒教育,轉載請註明出處。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31548651/viewspace-2782887/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Laravel 生命週期介紹Laravel
- javascript生命週期簡單介紹JavaScript
- servlet的生命週期和工作原理介紹Servlet
- 簡單的介紹 Eloquent 模型生命週期模型
- Spring Bean各階段生命週期的介紹SpringBean
- React16 新生命週期和 Hooks 介紹ReactHook
- Activity簡介及生命週期
- RxFluxArchitecture框架介紹2-生命週期與訂閱管理UX框架
- Vue生命週期鉤子簡介Vue
- React元件和生命週期簡介React元件
- 生命週期
- 學習內容介紹
- Rust 程式設計影片教程(進階)——004_1 生命週期介紹Rust程式設計
- View生命週期與Activity生命週期的關係View
- PHP 生命週期PHP
- Flutter - 生命週期Flutter
- sessionStorag 生命週期Session
- Fragment生命週期Fragment
- Activity生命週期
- vue - 生命週期Vue
- React生命週期React
- ubuntu生命週期Ubuntu
- React 生命週期React
- vue生命週期Vue
- Servlet簡介及其生命週期詳解Servlet
- 安全軟體開發生命週期簡介
- Salesforce 生命週期管理(一)應用生命週期淺談Salesforce
- Rust 程式設計視訊教程(進階)——004_1 生命週期介紹Rust程式設計
- 【三】Kubernetes學習筆記-Pod 生命週期與 Init C 介紹筆記
- Servlet第六篇【Session介紹、API、生命週期、應用、與Cookie區別】ServletSessionAPICookie
- Activity生命週期onDestroy
- Flutter -- Element生命週期Flutter
- Flutter 的生命週期Flutter
- SQL的生命週期SQL
- java servlet 生命週期JavaServlet
- React-生命週期React
- vue 生命週期梳理Vue
- Laravel的生命週期Laravel