Lifecycles 生命周期
生命周期組件是 Android 官方架構(gòu)組件中的核心組件, 它可以使各種實例作為觀察者與 Activity 和 Fragment 等具有生命周期特性的組件綁定在一起, LiveData 和 ViewModel 都是基于此組件, 簡而言之就是, 你將需要綁定生命周期的實例注冊給該組件, 該組件就會在你指定的某個生命周期方法執(zhí)行時通知這個實例
幾個重要的類
LifecycleObserver接口( Lifecycle觀察者):實現(xiàn)該接口的類蝗茁,通過注解的方式,可以通過被LifecycleOwner類的addObserver(LifecycleObserver o)方法注冊,被注冊后,LifecycleObserver便可以觀察到LifecycleOwner的生命周期事件阴孟。
LifecycleOwner接口(Lifecycle持有者):實現(xiàn)該接口的類持有生命周期(Lifecycle對象)龙致,該接口的生命周期(Lifecycle對象)的改變會被其注冊的觀察者LifecycleObserver觀察到并觸發(fā)其對應(yīng)的事件。
Lifecycle(生命周期):和LifecycleOwner不同的是,LifecycleOwner本身持有Lifecycle對象毕贼,LifecycleOwner通過其Lifecycle getLifecycle()的接口獲取內(nèi)部Lifecycle對象。
State(當(dāng)前生命周期所處狀態(tài))
Event(當(dāng)前生命周期改變對應(yīng)的事件):如圖所示拄衰,當(dāng)Lifecycle發(fā)生改變它褪,如進入onCreate,會自動發(fā)出ON_CREATE事件。
-
observer類中翘悉,使用OnLifecycleEvent注解新生成的類
- 在build-> intermediates->exploded-aar->對應(yīng)的module下
- 事件發(fā)生變化后會調(diào)用sync()方法茫打,同步通知observer中的狀態(tài)
LiveData
LiveData是一個可觀察的數(shù)據(jù)持有者類。與常見的觀察者不同妖混,LiveData是有生命周期感知的老赤。這意味著它尊重其他應(yīng)用程序組件的生命周期,比如Activity制市、Fragment或Service抬旺。這種感知確保LiveData只更新處于生命周期狀態(tài)內(nèi)的應(yīng)用程序組件。
ViewModel
ViewModel 有兩個功能, 第一個功能可以使 ViewModel 以及 ViewModel 中的數(shù)據(jù)在屏幕旋轉(zhuǎn)或配置更改引起的 Activity 重建時存活下來, 重建后數(shù)據(jù)可繼續(xù)使用, 第二個功能可以幫助開發(fā)者輕易實現(xiàn) Fragment 與 Fragment 之間, Activity 與 Fragment 之間的通訊以及共享數(shù)據(jù)
使用
- 通過創(chuàng)建MyViewmodel extends AndroidViewModule
- 內(nèi)部新建MutableLiveData<T> 創(chuàng)建可監(jiān)聽數(shù)據(jù)
- 通過context獲取到viewmodule 添加監(jiān)聽 viewmodule.liveData.observer()
轉(zhuǎn)自改造 Android 官方架構(gòu)組件 ViewModel
轉(zhuǎn)自Lifecycle詳解&原理分析