什么是RxJava
Rx是異步響應式編程的意思,本質是觀察者模式,以觀察者和訂閱者的異步響應式編程。
本文主要介紹了關于RxJava 2.x新特性的相關資料,下面話不多說,來看看詳細的介紹吧。
背壓的分離

Flowable/Subscriber
Flowable.range(0,10).subscribe(new Subscriber<Integer>() { Subscription sub; //當訂閱后,會首先調用這個方法,其實就相當于onStart(), //傳入的Subscription s參數可以用于請求數據或者取消訂閱 @Override public void onSubscribe(Subscription s) { Log.w("TAG","onsubscribe start"); sub=s; sub.request(1); Log.w("TAG","onsubscribe end"); } @Override public void onNext(Integer o) { Log.w("TAG","onNext--->"+o); sub.request(1); } @Override public void onError(Throwable t) { t.printStackTrace(); } @Override public void onComplete() { Log.w("TAG","onComplete"); }});輸出:
onsubscribe startonNext--->0onNext--->1onNext--->2...onNext--->10onCompleteonsubscribe end
根據上面的代碼的結果輸出中可以看到,當我們調用subscription.request(n)方法的時候,不等onSubscribe()中后面的代碼執行,就會立刻執行到onNext方法,因此,如果你在onNext方法中使用到需要初始化的類時,應當盡量在subscription.request(n)這個方法調用之前做好初始化的工作;
另外一種創建方法
Flowable.create(new FlowableOnSubscribe<Integer>() { @Override public void subscribe(FlowableEmitter<Integer> e) throws Exception { e.onNext(1); e.onNext(2); e.onNext(3); e.onNext(4); e.onComplete(); } } //需要指定背壓策略 , BackpressureStrategy.BUFFER);其他觀察者模式
以上三種類似, 比較適合發送單個數據, 并不適合發送大量數據.
//判斷是否登陸Maybe.just(isLogin()) //可能涉及到IO操作,放在子線程 .subscribeOn(Schedulers.newThread()) //取回結果傳到主線程 .observeOn(AndroidSchedulers.mainThread()) .subscribe(new MaybeObserver<Boolean>() { @Override public void onSubscribe(Disposable d) { } @Override public void onSuccess(Boolean value) { if(value){ ... }else{ ... } } @Override public void onError(Throwable e) { } @Override public void onComplete() { } });實際上,這種觀察者模式并不用于發送大量數據,而是發送單個數據,也就是說,當你只想要某個事件的結果(true or false)的時候,你可以用這種觀察者模式
Action
Rx1.0―――
主站蜘蛛池模板:
威远县|
车险|
清河县|
宁津县|
慈利县|
南乐县|
浮山县|
永德县|
泗洪县|
晋城|
康保县|
遵化市|
教育|
安乡县|
台南市|
马边|
正阳县|
松江区|
射洪县|
五常市|
天柱县|
安国市|
潍坊市|
秀山|
安仁县|
武汉市|
汝南县|
泗阳县|
信丰县|
东兰县|
无棣县|
南平市|
常熟市|
富阳市|
永德县|
刚察县|
连南|
鄂伦春自治旗|
东山县|
东山县|
吉林市|