Android Jetpack - LiveData 介紹
阿新 • • 發佈:2018-12-13
1.前言
- 2018年穀歌I/O 釋出了一系列輔助android開發者的實用工具,合稱 Jetpack ,以幫助開發者構建出色的 Android 應用。
- Jetpack 包含4個部分的元件:Architecture、Foundation、Behavior 以及 UI 。
- 今天為大家介紹的是 Architecture 中
LiveData
。 - 文章中例項 linhaojian的Github
2.簡介
- 介紹 :
LiveData是一個有生命週期感知 & 可觀察的資料持有者類。 - 作用:
1.持久化的觀察資料的更改與變化 & 及時通知UI更新。 - 特點:
1.感知對應Activity的生命週期,只有生命週期處於onStart與onResume時,LiveData處於活動狀態,才會把更新的資料通知至對應的Activity。
2.當生命週期處於onStop或者onPause時,不回撥資料更新,直至到生命週期為onResume時,立即回撥。
3.當生命週期處於onDestory時,觀察者會自動刪除,防止記憶體溢位。
4.共享資源。您可以使用單例模式擴充套件LiveData
物件以包裝系統服務,以便可以在應用程式中共享它們。LiveData
物件連線到系統服務一次,然後任何需要該資源的觀察者都可以只觀看LiveData
物件。
3.原理
- 執行流程
- 類分析
* Observer : 觀察者,負責監聽資料變化 & 回撥。
* **LifecycleOwner ** : 感知Activity生命週期的類。
* LifecycleBoundObserver
* SafeIterableMap : 以<Observer,LifecycleBoundObserver>的格式儲存多個觀察者。
4.基本使用
4.1 MutableLiveData 初始化
LiveData是一個抽象類,所以在使用時,我們需要使用它的實現類 MutableLiveData。
public class AViewModel extends ViewModel {
private MutableLiveData<User> userLiveData = new MutableLiveData<User>();
}
#### 4.2 Observer註冊
```java
public class ActivityA extends AppCompatActivity {
//...
ViewModelProviders.of(this).get(AViewModel.class)
.getUser().observe(this, new Observer<User>() {
@Override
public void onChanged(@Nullable User user) {
//獲取資料變化
}
});
}
4.3 資料變化觸發
- 同步:接收端資料回撥與傳送端同一個執行緒。
userLiveData.setValue(user);
- 非同步:接收端在主執行緒回撥資料。
userLiveData.postValue(user);
5.總結
- 到此,
LiveData
就介紹完成了。後續我會進行分享Jetpack更多其他內容。 - 如果喜歡我的分享,可以點選 關注 或者 贊,你們支援是我分享的最大動力 。
- linhaojian的Github
歡迎關注linhaojian_CSDN部落格或者linhaojian_簡書!
不定期分享關於安卓開發的乾貨。
寫技術文章初心
- 技術知識積累
- 技術知識鞏固
- 技術知識分享
- 技術知識交流