最佳實踐
添加依賴
getLifecycle()
方法擷取
Lifecycle
對象,然後添加監聽對象
LifecycleObserver
,Lifecycle庫提供了一個
DefaultLifecycleObserver
,根據業務需求來重寫相應的方法。
使用分析
整個的實作就是一個觀察者模式,觀察模式的基本原理:有兩個角色,分别為觀察者(Observer)和被觀察者(Observable),首先所有的觀察者都需要在被觀察者中進行注冊,然後被觀察者狀态發生變更時,就通知已經注冊的觀察者,然後調用相應的方法。
LifecycleObserver
:生命周期觀察者的标示接口,是一個空接口,沒有實作方法;
實作這個接口,然後可以使用注解
@OnLifecycleEvent
來标示在哪一個生命周期進行回調;
LifecycleRegistry
:觀察者注冊類,其中構造方法傳入一個
LifecycleOwner
對象(也就是被觀察者);
使用其
add
方法來添加觀察者,使用
setCurrentState
進行狀态變更。
使用Jetpack中的Activity和Fragment
使用androidx中
appcompat
庫裡的Activity或者
fragment
庫中的Fragment,無需上述初始化
LifecycleRegistry
和狀态切換兩個步驟,且已經實作了
LifecycleObserver
接口,隻需要在合适的時候添加觀察者即可。
PS:
LifecycleRegistry
構造方法傳入的對象一般是Activity或Fragment,其中會不會導緻記憶體洩漏呢?其實是不會的,因為内部實作是使用了弱引用。
歡迎關注微信公衆号:SimFG,讓我們一起學習一起進步