LiveData使用介紹

2021-09-12 06:10:47 字數 1391 閱讀 3584

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...