成人在线亚洲_国产日韩视频一区二区三区_久久久国产精品_99国内精品久久久久久久

您的位置:首頁技術(shù)文章
文章詳情頁

Android LiveData使用需要注意的地方

瀏覽:4日期:2022-09-20 09:45:33

關(guān)于LiveData是什么以及基本使用方式,請參考官方文檔:developer.android.com/topic/libra…

簡單來說,LiveData是一個(gè)可被觀察的數(shù)據(jù)容器類。它將數(shù)據(jù)包裝起來,使得數(shù)據(jù)成為“被觀察者”,頁面成為“觀察者”。當(dāng)ViewModel存放頁面所需要的各種數(shù)據(jù)發(fā)生變化時(shí),通過LiveData的方式實(shí)現(xiàn)對頁面的通知,完成ViewModel與頁面組件之間的通信。

那么在使用時(shí)發(fā)現(xiàn)有以下幾個(gè)地方需要注意:

1.回調(diào)通知

LiveData的觀察者會(huì)在每次進(jìn)入活躍態(tài)時(shí)收到回調(diào),如果只想收到一次回調(diào)的話,可以使用SingleLiveEvent。要注意SingleLiveEvent僅限于一個(gè)觀察者。如果添加了多個(gè)則只會(huì)調(diào)用一個(gè),并且不能保證哪一個(gè)。

2.數(shù)據(jù)倒灌

所謂數(shù)據(jù)倒灌是一種形象的說法,它是指先setValue/postValue,后調(diào)用observe(new Obs()),至此收到了回調(diào)。然后再調(diào)用observe(new anotherObs()),如果還能收到第一次的回調(diào),也就是舊數(shù)據(jù)。解決方案可以參考開源項(xiàng)目:UnPeek-LiveData。

3.事件包裝

上面提到SingleLiveEvent僅限于一個(gè)觀察者,如果需要多個(gè)觀察者該如何處理呢,方案就是使用事件包裝。定義一個(gè)數(shù)據(jù)包裝器,內(nèi)部判斷事件是否消費(fèi)了,被消費(fèi)后則不再回調(diào)通知。代碼如下:

/*** 事件包裝器,明確地管理事件是否已經(jīng)被處理* @param <T> ViewModel中的數(shù)據(jù),比如: * MutableLiveData<LiveEventWrapper<String>>()*/public class LiveEventWrapper<T> { private T content; private boolean hasBeenHandled; public LiveEventWrapper(T content) { this.content = content; } /** * Returns the content and prevents its use again. */ public T getContentIfNotHandled() { if (hasBeenHandled) { return null; } else { hasBeenHandled = true; return content; } } /** * Returns the content, even if it’s already been handled. */ public T peekContent() { return content; } public boolean isHasBeenHandled() { return hasBeenHandled; }}

或者

import androidx.annotation.NonNull;import androidx.lifecycle.LifecycleOwner;import androidx.lifecycle.LiveData;import androidx.lifecycle.Observer;public class CleanLiveData<T> extends LiveData<T> { private boolean hasModified = false; @Override public void observe(@NonNull LifecycleOwner owner, @NonNull final Observer<? super T> observer) { super.observe(owner, new Observer<T>() { private boolean hasIntercept = false; @Override public void onChanged(T t) {if (!hasModified || hasIntercept) { observer.onChanged(t);}hasIntercept = true; } }); } @Override public void observeForever(@NonNull final Observer<? super T> observer) { super.observeForever(new Observer<T>() { private boolean hasIntercept = false; @Override public void onChanged(T t) {if (!hasModified || hasIntercept) { observer.onChanged(t);}hasIntercept = true; } }); } @Override public void setValue(T value) { super.setValue(value); hasModified = true; } @Override public void postValue(T value) { super.postValue(value); hasModified = true; }}

總結(jié)來看,以上現(xiàn)象基本都是由于LiveData的粘性特性引發(fā)的,因此在使用LiveData的時(shí)一定要搞清楚它的概念和原理。

以上就是Android LiveData使用需要注意的地方的詳細(xì)內(nèi)容,更多關(guān)于Android LiveData使用的資料請關(guān)注好吧啦網(wǎng)其它相關(guān)文章!

標(biāo)簽: Android
相關(guān)文章:
成人在线亚洲_国产日韩视频一区二区三区_久久久国产精品_99国内精品久久久久久久
欧美日韩在线播放一区| 在线播放/欧美激情| 一区二区三区精品视频在线观看| 欧美午夜精品一区| 亚洲国产综合色| 国产精品theporn| 欧美r级电影在线观看| 蓝色福利精品导航| 免费看亚洲片| 亚洲男同性恋视频| 91麻豆.com| 欧美一级视频精品观看| 日本不卡不码高清免费观看| 夜夜嗨av一区二区三区网站四季av| 久久综合精品国产一区二区三区 | 亚洲精品视频在线观看免费| 欧美成人国产| 久久亚洲一区二区三区明星换脸| 国产精品亚洲午夜一区二区三区| 欧洲一区二区三区在线| 亚洲国产欧美在线人成| 亚洲精选在线| 18成人在线视频| 欧美精品观看| 国产日韩欧美麻豆| 99久免费精品视频在线观看 | 国产精品久久久久久久久晋中 | 午夜私人影院久久久久| 国产精品乱子乱xxxx| 亚洲激情综合网| 亚洲精品女人| 亚洲另类春色校园小说| 亚洲精品专区| 夜夜嗨av一区二区三区网页| 在线视频精品| 一区二区国产视频| 中文一区二区| 一区二区三区av电影| 亚洲精品影视| 日韩伦理电影网| 伊人成人在线| 亚洲视频一区二区在线观看| 国内精品福利| 亚洲欧美一区二区三区极速播放| 好看的日韩av电影| 亚洲视频一区在线| 亚洲国产日韩欧美一区二区三区| 成人欧美一区二区三区小说| 国产精品www994| 中文字幕在线视频一区| 国产精品国产三级国产专区53| 久久九九久精品国产免费直播| 成人精品鲁一区一区二区| 精品国一区二区三区| 成人动漫一区二区三区| 久久久久久亚洲综合| 欧美日韩亚洲一区二区三区在线观看| 免费h精品视频在线播放| 三级欧美在线一区| 欧美三级视频在线| 国产凹凸在线观看一区二区| 久久―日本道色综合久久| 欧美精品尤物在线| 亚洲伦理在线免费看| 免费看的黄色欧美网站| 免费在线观看日韩欧美| 91麻豆精品国产91久久久久久久久| 国产精品一区二区果冻传媒| 精品久久国产97色综合| 欧美日韩国产综合网| 精品成人私密视频| 91在线无精精品入口| 在线日韩av| 亚洲综合在线观看视频| 久久av最新网址| 精品一区二区三区欧美| 欧美成人一级视频| 国产精品va| 奇米色一区二区三区四区| 91精品国产综合久久精品app| www.综合网.com| 亚洲欧美日韩国产另类专区| aa亚洲婷婷| 精品在线免费视频| 久久久精品影视| 亚洲日产国产精品| 美女网站视频久久| 久久综合久久鬼色| 99精品视频免费观看视频| 久久精品国产99国产精品| 久久久天堂av| 免费欧美日韩| 国产成人免费在线观看| 国产精品免费av| 日本丶国产丶欧美色综合| 成人性色生活片免费看爆迷你毛片| 日本一区二区三区在线观看| 99视频+国产日韩欧美| 日韩和欧美一区二区三区| 欧美日韩成人一区| 亚洲午夜久久久久久尤物| 日韩极品在线观看| 久久视频一区二区| 黄页网站一区| 毛片不卡一区二区| 国产欧美精品一区| 久久精品国语| 成人av影视在线观看| 亚洲精品视频在线观看免费| 91精品国产91热久久久做人人| 一区在线视频观看| 国产精品77777| 亚洲桃色在线一区| 欧美高清视频www夜色资源网| 国产一区二区在线观看免费播放| 免费高清视频精品| 成人免费在线视频| 日韩欧美视频在线| 国产在线一区二区三区四区| 久久成人av少妇免费| 亚洲欧美在线aaa| 欧美一区二区三区在线观看| 妖精视频成人观看www| 成人免费视频网站在线观看| 午夜精品福利一区二区蜜股av| 国产亚洲精品资源在线26u| 色婷婷精品大在线视频| 91日韩一区二区三区| 麻豆高清免费国产一区| 中文字幕一区二| 日韩精品一区二区三区中文不卡 | 亚洲激情图片qvod| 欧美videossexotv100| 亚洲三级观看| aaa国产一区| 国模一区二区三区白浆| 一区二区欧美国产| 国产偷v国产偷v亚洲高清| 精品视频资源站| 一区二区三区国产盗摄| 99精品国产一区二区三区不卡| 日韩精品视频网| 中文字幕亚洲一区二区av在线| 日韩欧美区一区二| 在线观看av不卡| 亚洲在线电影| 欧美日本免费| 国产成人福利片| 日韩国产一二三区| 一区二区三区成人在线视频| 国产欧美一区二区精品婷婷| 欧美一区二区三区性视频| 色婷婷综合视频在线观看| 亚洲精美视频| 99久久久久免费精品国产| 久久99国内精品| 亚州成人在线电影| 亚洲黄一区二区三区| 国产精品女主播在线观看| 日韩精品一区二区三区视频播放| 欧美午夜精品久久久| 亚洲尤物影院| 一本色道久久综合亚洲精品高清| 欧美二区在线| www.久久久久久久久| 国产精品91xxx| 激情五月婷婷综合| 久久成人久久爱| 日本成人在线看| 亚洲综合丁香婷婷六月香| 中文字幕一区二区三区蜜月| 久久亚洲综合av| 亚洲精品在线三区| 欧美一二三区在线| 欧美区在线观看| 91福利在线看| 在线视频观看一区| 久久中文欧美| 亚洲一区不卡| 一区二区黄色| 亚洲国产精品123| 91久久午夜| 国产日产精品一区二区三区四区的观看方式 | 在线国产欧美| 黄色亚洲精品| 91小宝寻花一区二区三区| 99久久久免费精品国产一区二区| 粉嫩aⅴ一区二区三区四区| 国产精品一区不卡| 国产一区二区伦理| 国产精品99久久久久久有的能看| 国产呦萝稀缺另类资源| 免费美女久久99| 精品亚洲成a人| 国产一区二区影院| 国产一区在线不卡| 国产成人高清视频| 不卡视频一二三| 99久久精品免费精品国产| 91麻豆国产香蕉久久精品|