RxJava 基础的使用
學習地址:?
github wiki 學習地址
ReactiveX 操作符學習地址
RxJava是ReactiveX(反應性擴展)的Java VM實現:一個用于通過使用可觀察的序列組成異步和基于事件的程序的庫。
RxJava 是基于觀察者模式? 里面有
Observable(被觀察者)--->用來產生事件的
Observer(觀察者)---> 接受事件并作出響應
Subscribe(訂閱) --->連接 被觀察者和觀察者
現在呢Rxjava 到3.0 了, 使用首先 引入庫
implementation "io.reactivex.rxjava3:rxjava:3.0.0-RC5"implementation 'io.reactivex.rxjava2:rxandroid:2.1.1'
1? 引入庫之后創建被觀察者 ------->產生事件
// 1. 創建被觀察者 Observable 對象Observable<String> observable =Observable.create(new ObservableOnSubscribe<String>() {@Overridepublic void subscribe(ObservableEmitter<String> emitter) {emitter.onNext("哈嘍! Rxjava");emitter.onNext("嗨! Rxjava");emitter.onNext("喂! Rxjava");emitter.onComplete();}});
2 創建觀察者 --------> 接受事件并作出響應
//創建觀察者 (Observer )并 定義響應事件的行為Observer<String> observer = new Observer<String>() {@Overridepublic void onSubscribe(Disposable d) {Log.d("-----rxjava", "開始采用subscribe連接");}@Overridepublic void onNext(String value) {Log.d("-----rxjava", "對Next事件作出響應:" + value);}@Overridepublic void onError(Throwable e) {Log.d("-----rxjava", "對Error事件作出響應" + e);}@Overridepublic void onComplete() {Log.d("-----rxjava", "對onComplete事件作出響應:RxJava認識完成");}};
3?連接 被觀察者和觀察者
//通過訂閱(Subscribe)連接觀察者和被觀察者observable.subscribe(observer);
整體的實現為-------------以一個button 點擊事件為例
findViewById(R.id.rx_basic).setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {// 1. 創建被觀察者 Observable 對象Observable<String> observable =Observable.create(new ObservableOnSubscribe<String>() {@Overridepublic void subscribe(ObservableEmitter<String> emitter) {emitter.onNext("哈嘍! Rxjava");emitter.onNext("嗨! Rxjava");emitter.onNext("喂! Rxjava");emitter.onComplete();}});//創建觀察者 (Observer )并 定義響應事件的行為Observer<String> observer = new Observer<String>() {@Overridepublic void onSubscribe(Disposable d) {Log.d("-----rxjava", "開始采用subscribe連接");}@Overridepublic void onNext(String value) {Log.d("-----rxjava", "對Next事件作出響應:" + value);}@Overridepublic void onError(Throwable e) {Log.d("-----rxjava", "對Error事件作出響應" + e);}@Overridepublic void onComplete() {Log.d("-----rxjava", "對onComplete事件作出響應:RxJava認識完成");}};//通過訂閱(Subscribe)連接觀察者和被觀察者observable.subscribe(observer);}});
打印結果
上將就是最基礎的Rxjava 創建
?
我們常說RxJava 是基于事件流的鏈式調用 下面寫一下鏈接的 ,上面的案例是為了更好的理解rxjava
//基于事件流的鏈式調用findViewById(R.id.rx_link_basic).setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {//創建被觀察者 & 生產事件//create()作用是創建被觀察者對象,是最基本的操作符,只有創建Observable.create(new ObservableOnSubscribe<String>() {@Overridepublic void subscribe(ObservableEmitter<String> emitter) {emitter.onNext("哈嘍! Rxjava");emitter.onNext("嗨! Rxjava");emitter.onNext("喂! Rxjava");emitter.onComplete();}//subscribe訂閱者連接觀察者和被觀察者//Observer 創建觀察者 & 定義響應事件的行為}).subscribe(new Observer<String>() {@Overridepublic void onSubscribe(Disposable d) {Log.d("-----rxjava", "開始采用subscribe連接");}@Overridepublic void onNext(String s) {Log.d("-----rxjava", "對Next事件作出響應:" + s);}@Overridepublic void onError(Throwable e) {Log.d("-----rxjava", "對Error事件作出響應" + e);}@Overridepublic void onComplete(){Log.d("-----rxjava", "對onComplete事件作出響應:RxJava認識完成");}});}});
打印結果
以上就是Rxjava的認識, 可能你平時會看到 時候沒有使用create() 被觀察者也創建了
這里就要說一下操作符
create() 這個是操作符最基本的操作符,只有創建被觀察者功能
其他的操作符,不僅有其他的功能 還有創建的功能 ,比如just()作用不僅能創建還能發射對象
下面在看一個例子
//just()作用不僅能創建還能發射對象等會通過案例對比下//just 的特點:1 創建被觀察者對象 2 發送事件Observable.just("哈嘍 Rxjava","嗨 Rxjava","喂! Rxjava").subscribe(new Observer<String>() {@Overridepublic void onSubscribe(Disposable d) {Log.d("-----rxjava", "開始采用subscribe連接");}@Overridepublic void onNext(String s) {Log.d("-----rxjava", "對Next事件作出響應:" + s);}@Overridepublic void onError(Throwable e) {Log.d("-----rxjava", "對Error事件作出響應" + e);}@Overridepublic void onComplete() {Log.d("-----rxjava", "對onComplete事件作出響應:RxJava認識完成");}});
?有時候可能只要結果的時候就可以使用如下,直接返回結果
Observable.just("哈嘍 Rxjava","嗨 Rxjava","喂! Rxjava").subscribe(new Consumer<String>() {@Overridepublic void accept(String s) {Log.d("-----rxjava", s);}});
下一邊說一下RxJava 取消訂閱.
?
?
?
總結
以上是生活随笔為你收集整理的RxJava 基础的使用的全部內容,希望文章能夠幫你解決所遇到的問題。