原文引用自:https://medium.com/@factoryhr/understanding-java-rxjava-for-beginners-5eacb8de12ca
這篇文章 我會(huì)通過(guò)一些簡(jiǎn)單基本的例子解釋一下rxjava,這篇文章適合初學(xué)的一頭霧水的小伙伴 如果您是大神也可以再看一下 加深理解株依。
什么是RxJava
RxJava是ReactiveX的Java 虛擬機(jī)的實(shí)現(xiàn)疟赊,是一個(gè)使用可觀察序列組成異步和基于事件的程序的庫(kù) 或者再簡(jiǎn)單粗暴理解一下就是 處理異步任務(wù) 或者處理事件流的庫(kù)焕阿。
rxjava的三大件:
1,Observables? 被觀察著
2广凸,Subscribers? 消費(fèi)者
3瘦棋,Operator? ?操作符?
RxJava的構(gòu)建基礎(chǔ)是Observables和Subscribers。 Observable用于發(fā)出item胧洒,Subscriber用于消費(fèi)這些item畏吓。這與標(biāo)準(zhǔn)的Observable模式非常相似,但RxJava做得更好卫漫,有更多的選擇菲饼。例如,Observables通常不會(huì)在有人訂閱它們之前開始發(fā)出項(xiàng)目列赎。這是一個(gè)很棒的功能宏悦,因?yàn)檫@樣你就可以節(jié)省不惜要的性能開銷。
RxJava 訂閱者訂閱Observable包吝,然后Observable為任意數(shù)量的項(xiàng)調(diào)用Subscriber.onNext()饼煞,如果出現(xiàn)問(wèn)題則是Subsciber.onError(),如果一切正常诗越,則為Subscriber.onCompleted()砖瞧。流程就是這么簡(jiǎn)單 請(qǐng)看下邊實(shí)例代碼理解這個(gè)過(guò)程
創(chuàng)建一個(gè)Observable??
創(chuàng)建一個(gè)觀察者?
下邊是Observable注冊(cè)觀察者
這樣就妥了 這倆個(gè)東西組成了Rxjava使用的一個(gè)基本流程?
結(jié)果是:
I/System.out: Blue Factory
I/System.out: I’m done
這個(gè)例子這么簡(jiǎn)單 我們還能加點(diǎn)東西讓它變得更加簡(jiǎn)單 例如create那個(gè)方法 請(qǐng)看下邊
這樣一句話就搞定了。瘦身成功 執(zhí)行下結(jié)果和原來(lái)一樣? 我們還可以操作一個(gè)list集合 請(qǐng)看下邊
創(chuàng)建一個(gè)list先?
再創(chuàng)建一個(gè)Observable?
然后再訂閱
執(zhí)行結(jié)果就是遍歷了這個(gè)集合嚷狞。
I/System.out: Blue
I/System.out: Factory
I/System.out: Blog
I/System.out: Post
Operator 很重要的一個(gè)操作符 我們?cè)賮?lái)學(xué)習(xí)一下 看下邊例子?
我們?cè)谠瓉?lái)的just上又 map了一下? map是操作符 意思就是把原來(lái)的數(shù)據(jù)又轉(zhuǎn)換了一下 最后發(fā)送到Subscriber
我想再map一下可以么? 我們?cè)偻嬉幌逻@個(gè)map??
map了2次块促,一個(gè)數(shù)據(jù)經(jīng)過(guò)幾次map 可以根據(jù)我們自己的業(yè)務(wù)需求 變換原始數(shù)據(jù)(可以是任何對(duì)象)這就是對(duì)數(shù)據(jù)流的處理 處理完畢后結(jié)果發(fā)送到Subscriber。
總結(jié):
我們可以對(duì) 字符串床未,整數(shù)竭翠,API調(diào)用,點(diǎn)擊等即硼。我們使用RxJava進(jìn)行API調(diào)用和android? 控件事件的處理逃片。 RxJava提供了簡(jiǎn)單的API處理屡拨,因?yàn)槟恍枰獡?dān)心線程只酥,并且您可以鏈接少量請(qǐng)求并在單個(gè)訂閱服務(wù)器上獲得結(jié)果。使用RxJava呀狼,您可以處理一些控件行為裂允,例如,在一個(gè)按鈕按下五次后將執(zhí)行的操作哥艇,或者您可以創(chuàng)建Observable绝编,它將每4秒從EditText輸入發(fā)出一個(gè)String,以及許多其他奇特的東西貌踏。我希望本文為您提供RxJava的基礎(chǔ)知識(shí)十饥,并希望您將來(lái)繼續(xù)深入探索RxJava。