- Android Jetpack應用指南
- 葉坤
- 680字
- 2020-08-06 15:42:29
2.4 使用ProcessLifecycleOwner監聽應用程序的生命周期
2.4.1 ProcessLifecycIeOwner存在的意義
具有生命周期的系統組件除Activity、Fragment、Service外,還有Application。很多時候,我們會遇到這樣的需求:我們想知道應用程序當前處在前臺還是后臺,或者當應用程序從后臺回到前臺時,我們能夠得到通知。有不少方案能夠實現該需求,但都不夠好。在此之前,Google并沒有為該需求提供官方解決方案,直到LifeCycle的出現。LifeCycle提供了一個名為ProcessLifecycleOwner的類,以方便我們知道整個應用程序的生命周期情況。
2.4.2 ProcessLifecycIeOwner的具體使用方法
1.首先,我們需要在app的build.gradle文件中添加相關依賴。

2.ProcessLifecycleOwner的使用方式與Activity、Fragment和Service是類似的,其本質也是觀察者模式。由于我們要觀察的是整個應用程序,因此,需要在Application中進行相關代碼的編寫。

3.定義一個名為ApplicationObserver的類,讓該類實現LifecycleObserver接口,以負責對應用程序生命周期的監聽。



通過以上示例可以看出,有了ProcessLifecycleOwner,我們可以輕而易舉地獲知應用程序何時退到后臺,何時進入前臺,進而執行一些業務操作。它使用起來非常簡單,并且不會給項目增加任何的耦合度,但有以下幾點需要注意。
● ProcessLifecycleOwner是針對整個應用程序的監聽,與Activity數量無關,你有一個Activity或多個Activity,對ProcessLifecycleOwner來說是沒有區別的。
● Lifecycle.Event.ON_CREATE只會被調用一次,而Lifecycle.Event.ON_DESTROY永遠不會被調用。
● 當應用程序從后臺回到前臺,或者應用程序被首次打開時,會依次調用Lifecycle.Event.ON_START和Lifecycle.Event.ON_RESUME。
● 當應用程序從前臺退到后臺(用戶按下Home鍵或任務菜單鍵),會依次調用Lifecycle.Event.ON_PAUSE和Lifecycle.Event.ON_STOP。需要注意的是,這兩個方法的調用會有一定的延后。這是因為系統需要為“屏幕旋轉,由于配置發生變化而導致Activity重新創建”的情況預留一些時間。也就是說,系統需要保證當設備出現這種情況時,這兩個事件不會被調用。因為當旋轉屏幕時,你的應用程序并沒有退到后臺,它只是進入了橫/豎屏模式而已。
- CorelDRAW X4服裝設計標準教程
- 2013年世界煉油技術新進展:AFPM年會譯文集
- 嵌入式Linux開發實用教程(“十二五”國家重點圖書出版規劃項目)
- 網店商品圖片與視頻的拍攝及處理:修圖、設計、視頻編輯全流程(全彩微課版)(第2版)
- 男裝CAD工業制板
- 牡丹江水質綜合保障技術及工程示范研究
- Photoshop基礎
- 36堂創造課輕松玩轉掌控板
- 保安員(中級)
- Photoshop CS6/CorelDRAW X7標準培訓教程
- COSPLAY道具制作專業教程
- Premiere Pro CC實例教程(全彩版)
- Scikit-learn機器學習詳解(上)
- 銑削和數控銑削完全自學一本通(圖解雙色版)
- 實用圖解時尚女童裝裁剪90例