livedata的優點
在專案中使用livedata,會有以下優點:
確保ui符合資料狀態
livedata遵循觀察者模式。當生命週期狀態改變時,livedata會向observer發出通知。您可以把更新ui的**合併在這些observer物件中。不必去考慮導致資料變化的各個時機, -次資料有變化,觀察者都會去更新ui。
沒有記憶體洩漏
觀察會繫結具有生命週期的物件,並在這個繫結的物件被銷毀後自行清理。
不會因停止活動發生而崩潰
如果觀察的生命週期處於非活躍狀態,例如在後退堆疊中的活動,就不會收到任何livedata事件的通知。
不需要手動處理生命週期
ui元件只需要去觀察相關資料,不需要手動去停止或恢復觀察.livedata會進行自動管理這些事情,因為在觀察時,它會感知到相應元件的生命週期變化。
始終保持最新的資料
如果乙個物件的生命週期變到非活躍狀態,它將在再次變為活躍狀態時接收最新的資料。例如,後台活動在返回到前台後立即收到最新資料。
應對正確配置更改
如果乙個活動或片段由於配置更改(如裝置旋轉)而重新建立,它會立即收到最新的可用資料。
共享資源
您可以使用單例模式擴充套件livedata物件幷包裝成系統服務,以便在應用程式中進行共享.livedata物件一旦連線到系統服務,任何需要該資源的observer都只需觀察這個livedata物件。有關更多資訊,請參閱擴充套件livedata。
使用livedata物件
按照以下步驟使用livedata物件:
建立乙個livedata的例項來儲存特定型別的資料。這通常在viewmodel類中完成。
建立乙個定義了onchanged()方法的observer物件,當livedata物件儲存的資料發生變化時,onchanged()方法可以進行相應的處理。您通常在ui控制器(如activity或fragment)中建立observer物件。
使用observe()方法將observer物件註冊到livedata物件。observe()方法還需要乙個lifecycleowner物件作為引數.observer物件訂閱了livedata物件,便會在資料發生變化時發出通知。您通常需要ui控制器(如活動或片段)中註冊觀測物件。
注意:您可以使用observeforever(observer)方法註冊乙個沒有關聯lifecycleowner物件的observer。在這種情況下,observer被認為始終處於活動狀態,因此當有資料變化時總是會被通知。您可以呼叫removeobserver(觀察員)方法移除這些觀察員。
當你更新livedata物件中儲存的資料時,所有註冊了的observer,只要所繫結的lifecycleowner處於活動狀態,就會被觸發通知
.livedata允許ui控制器observer訂閱更新。當livedata物件所儲存的資料發生變化時,ui會在響應中自動更新
攜帶狀態的LiveData
在android mvvm架構中,livedata作為通知ui更新的橋梁,地位極其重要,可以說是mvvm的核心元件。class uservm viewmodel 複製 這樣的 會大量出現在我們的vm層中。然而非同步操作不是立即的,而且有進度,有狀態的。我們的ui很可能需要知道當前的非同步資料操作是否...
LiveData詳細分析
目錄介紹 感知生命週期 自動解除資料訂閱 2.1 具有很明顯的優點 不會發生記憶體洩露 不會再產生由於activity處於stop狀態而引起的崩潰 不需要再解決生命週期帶來的問題 實時資料重新整理 解決configuration change問題 資料共享 2.2 細節點補充4.1 單獨使用live...
Jetpack入坑(二)LiveData原始碼分析
livedata是乙個可觀察的資料儲存器。它可以通過觀察者observer與lifecycleowner配對來感知資料依附元件的生命週期狀態,只會把更新通知發給活躍的觀察者,所謂活躍就是觀察者處於started或者resumed狀態而沒有destroyed。既然是資料儲存器,他是如何更新資料呢 li...