摘要:只發(fā)射一條單一的數(shù)據(jù),或者一條異常通知,不能發(fā)射完成通知,其中數(shù)據(jù)與通知只能發(fā)射一個。觀察者可觀察對象對應(yīng)的觀察者為方法等同于中的。沒有用來處理完成通知的方法示例三發(fā)射完成通知示例四發(fā)射異常通知
在Rxjava2中,Observale和Flowable都是用來發(fā)射數(shù)據(jù)流的,但是,我們在實際應(yīng)用中,很多時候,需要發(fā)射的數(shù)據(jù)并不是數(shù)據(jù)流的形式,而只是一條單一的數(shù)據(jù),或者一條完成通知,或者一條錯誤通知。在這種情況下,我們再使用Observable或者Flowable就顯得有點大材小用,于是,為了滿足這種單一數(shù)據(jù)或通知的使用場景,便出現(xiàn)了Observable的簡化版——Single、Completable、Maybe。
Single
只發(fā)射一條單一的數(shù)據(jù),或者一條異常通知,不能發(fā)射完成通知,其中數(shù)據(jù)與通知只能發(fā)射一個。
Completable
只發(fā)射一條完成通知,或者一條異常通知,不能發(fā)射數(shù)據(jù),其中完成通知與異常通知只能發(fā)射一個
Maybe
可發(fā)射一條單一的數(shù)據(jù),以及發(fā)射一條完成通知,或者一條異常通知,其中完成通知和異常通知只能發(fā)射一個,發(fā)射數(shù)據(jù)只能在發(fā)射完成通知或者異常通知之前,否則發(fā)射數(shù)據(jù)無效。
示例一:Single發(fā)射單一數(shù)據(jù)
示例二:Single發(fā)射異常通知
SingleEmitter:Single的發(fā)射器
可觀察對象Single的發(fā)射器接口SingleEmitter中,
1、方法void onSuccess(T t)用來發(fā)射一條單一的數(shù)據(jù),且一次訂閱只能調(diào)用一次,不同于Observale的發(fā)射器ObservableEmitter中的void onNext(@NonNull T value)方法,在一次訂閱中,可以多次調(diào)用多次發(fā)射。
2、方法void onError(Throwable t)等同于ObservableEmitter中的void onError(@NonNull Throwable error)用來發(fā)射一條錯誤通知
3、SingleEmitter中沒有用來發(fā)射完成通知的void onComplete()方法。
方法onSuccess與onError只可調(diào)用一個,若先調(diào)用onError則會導(dǎo)致onSuccess無效,若先調(diào)用onSuccess,則會拋出io.reactivex.exceptions.UndeliverableException異常。
SingleObserver:Single觀察者
可觀察對象Single對應(yīng)的觀察者為SingleObserver
方法void onSubscribe(Disposable d)等同于Observer中的void onSubscribe(Disposable d)。
方法void onSuccess(T t)類似于Observer中的onNext(T t)用來接收Single發(fā)的數(shù)據(jù)。
方法void onError(Throwable e)等同于Observer中的void onError(Throwable e)用來處理異常通知。
沒有用來處理完成通知的方法void onComplete()
示例三:Completable發(fā)射完成通知
示例四:Completable發(fā)射異常通知
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/72150.html
摘要:相對于最大的更新就是把對背壓問題的處理邏輯從中抽取出來產(chǎn)生了新的可觀察對象。由于基于發(fā)射的數(shù)據(jù)流,以及對數(shù)據(jù)加工處理的各操作符都添加了背壓支持,附加了額外的邏輯,其運行效率要比慢得多。 背壓(backpressure)當(dāng)上下游在不同的線程中,通過Observable發(fā)射,處理,響應(yīng)數(shù)據(jù)流時,如果上游發(fā)射數(shù)據(jù)的速度快于下游接收處理數(shù)據(jù)的速度,這樣對于那些沒來得及處理的數(shù)據(jù)就會造成積壓,這...
摘要:現(xiàn)在網(wǎng)上已經(jīng)有大量的源碼分析文章,各種技術(shù)的都有。你完全可以寫成下面的鏈?zhǔn)斤L(fēng)格方法會最先被執(zhí)行同樣,為了便于理解,我會借用流里面經(jīng)常用到的水流進(jìn)行類比。該子類的命名是有規(guī)律可言的。現(xiàn)在網(wǎng)上已經(jīng)有大量的源碼分析文章,各種技術(shù)的都有。但我覺得很多文章對初學(xué)者并不友好,讓人讀起來云里霧里的,比源碼還源碼。究其原因,是根本沒有從學(xué)習(xí)者的角度去分析。在自己完成了源碼閱讀之后,卻忘記了自己是如何一步步提...
摘要:動態(tài)代理個經(jīng)紀(jì)人如何代理個明星掘金在代理模式女朋友這么漂亮,你缺經(jīng)紀(jì)人嗎中我們用寶強(qiáng)的例子介紹了靜態(tài)代理模式的概念。掘金使用從頭創(chuàng)建一個,這種方法比較簡單。 動態(tài)代理:1 個經(jīng)紀(jì)人如何代理 N 個明星 - Android - 掘金在 代理模式:女朋友這么漂亮,你缺經(jīng)紀(jì)人嗎? 中我們用寶強(qiáng)的例子介紹了靜態(tài)代理模式的概念。 本來我的目的是通過大家耳熟能詳?shù)睦觼砑由罾斫猓怯行┚W(wǎng)友指責(zé)...
閱讀 2596·2023-04-25 15:07
閱讀 705·2021-11-24 10:21
閱讀 2299·2021-09-22 10:02
閱讀 3517·2019-08-30 15:43
閱讀 3222·2019-08-30 13:03
閱讀 2287·2019-08-29 17:18
閱讀 3586·2019-08-29 17:07
閱讀 1873·2019-08-29 12:27