Jetpack.jpg
1.前言
- 2018年谷歌I/O 發(fā)布了一系列輔助android開發(fā)者的實(shí)用工具腾节,合稱 Jetpack 褥影,以幫助開發(fā)者構(gòu)建出色的 Android 應(yīng)用沾谓。
- Jetpack 包含4個部分的組件:Architecture、Foundation曼尊、Behavior 以及 UI 盟榴。
- 今天為大家介紹的是 Architecture 中
LiveData
曹质。 - 文章中實(shí)例 linhaojian的Github
2.簡介
- 介紹 :
LiveData是一個有生命周期感知 & 可觀察的數(shù)據(jù)持有者類。 - 作用:
1.持久化的觀察數(shù)據(jù)的更改與變化 & 及時通知UI更新擎场。 - 特點(diǎn):
1.感知對應(yīng)Activity的生命周期羽德,只有生命周期處于onStart與onResume時,LiveData處于活動狀態(tài)迅办,才會把更新的數(shù)據(jù)通知至對應(yīng)的Activity宅静。
2.當(dāng)生命周期處于onStop或者onPause時,不回調(diào)數(shù)據(jù)更新站欺,直至到生命周期為onResume時姨夹,立即回調(diào)纤垂。
3.當(dāng)生命周期處于onDestory時,觀察者會自動刪除匀伏,防止內(nèi)存溢出洒忧。
4.共享資源。您可以使用單例模式擴(kuò)展LiveData
對象以包裝系統(tǒng)服務(wù)够颠,以便可以在應(yīng)用程序中共享它們熙侍。LiveData
對象連接到系統(tǒng)服務(wù)一次,然后任何需要該資源的觀察者都可以只觀看LiveData
對象履磨。
3.原理
-
執(zhí)行流程
LiveData原理.png - 類分析
- Observer : 觀察者蛉抓,負(fù)責(zé)監(jiān)聽數(shù)據(jù)變化 & 回調(diào)。
- LifecycleOwner : 感知Activity生命周期的類剃诅。
- LifecycleBoundObserver : 負(fù)責(zé)關(guān)聯(lián)Observer與LifecycleOwner巷送。
- SafeIterableMap : 以<Observer,LifecycleBoundObserver>的格式存儲多個觀察者。
4.基本使用
4.1 MutableLiveData 初始化
LiveData是一個抽象類矛辕,所以在使用時笑跛,我們需要使用它的實(shí)現(xiàn)類 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) {
//獲取數(shù)據(jù)變化
}
});
}
4.3 數(shù)據(jù)變化觸發(fā)
- 同步:接收端數(shù)據(jù)回調(diào)與發(fā)送端同一個線程聊品。
userLiveData.setValue(user);
- 異步:接收端在主線程回調(diào)數(shù)據(jù)飞蹂。
userLiveData.postValue(user);
5.總結(jié)
- 到此,
LiveData
就介紹完成了翻屈。后續(xù)我會進(jìn)行分享Jetpack更多其他內(nèi)容陈哑。 - 如果喜歡我的分享,可以點(diǎn)擊 關(guān)注 或者 贊伸眶,你們支持是我分享的最大動力 惊窖。
- linhaojian的Github
歡迎關(guān)注linhaojian_CSDN博客或者linhaojian_簡書!
不定期分享關(guān)于安卓開發(fā)的干貨厘贼。
寫技術(shù)文章初心
- 技術(shù)知識積累
- 技術(shù)知識鞏固
- 技術(shù)知識分享
- 技術(shù)知識交流