[Android開發] RxJava2之路二 - 基本使用方法__Java

來源:互聯網
上載者:User
一、啥是RXJava 1.1 簡介

一個在Java Jvm上使用可觀測的序列來組成非同步、基於事件的程式的庫。
概念很複雜,沒所謂。我們先學會使用。

RxJava github地址:
https://github.com/ReactiveX/RxJava
RxJava github地址:
https://github.com/ReactiveX/RxAndroid

建議查看他的wiki,可以看它內容,進行通篇的認識。 1.2 三個概念 Observable:被觀察者(主題Subject) Observer/Subscriber:觀察者 Subscribe: 訂閱

Observable和Observer 通過subscribe() 方法實現訂閱關係

//以前是通過add到被觀察者裡面進行訂閱,然後change來進行通知。 RxJava是一旦訂閱就發送。 二、使用三部曲

前提是先依賴了

compile 'io.reactivex.rxjava2:rxandroid:2.0.1'// Because RxAndroid releases are few and far between, it is recommended you also// explicitly depend on RxJava's latest version for bug fixes and new features.compile 'io.reactivex.rxjava2:rxjava:2.0.1'
2.1 方法1: create

2.1.1 建立 被觀察者Observable

/** * 定義 被觀察者 * @return */public Observable<String> getObservable(){    return Observable.create(new ObservableOnSubscribe<String>() {        @Override        public void subscribe(ObservableEmitter e) throws Exception {            //只要有三個方法onNext、onError、onCompleted            //onNext類似觀察者模式的change            e.onNext("HI");  //發送資料            e.onNext("天平");  //發送資料            //發射完成,這種方法需要手動調用onCompleted,才會回調Observer的onCompleted方法            e.onComplete();            //onComplete 和 onError 只調用一個,兩個都用只認前面那個            //e.onError(new Exception("錯誤啦!"));        }    });

2.1.2 建立觀察者 Observer

/** * 產生觀察者 * @return */public Observer<String> getObserver(){    return new Observer<String>() {        @Override        public void onError(Throwable e) {            Log.d(TAG, "onError: "+e.getMessage());            //發生錯誤調用        }        @Override        public void onComplete() {            Log.d(TAG, "onCompleted: ");            //資料接收完成時調用        }        /**         *         * @param d         */        @Override        public void onSubscribe(Disposable d) {            //最先回調,沒有執行onNext、onComplete、onError也會回調            Log.d(TAG, "onSubscribe: "+d.toString());            //d.dispose();  //移除訂閱關係            //d.isDisposed(); //判斷取消了訂閱關係,為真就是沒有訂閱,假就是有訂閱中        }        /**         * 被觀察者調用onNext這裡就會回調         * @param s 參數         */        @Override        public void onNext(String s) {            Log.d(TAG, "onNext: "+s);            //正常接收資料調用            System.out.print(s);  //將接收到來自sender的問候"Hi,Weavey。"        }    };}

2.1.3 訂閱

@Overrideprotected void onCreate(Bundle savedInstanceState) {    super.onCreate(savedInstanceState);    setContentView(R.layout.activity_main);    Observable<String> observable = getObservable();    Observer<String> observer = getObserver();    //關聯觀察者和被觀察者-> 訂閱    observable.subscribe(observer);}
2.2 方法2: create

2.2.1 上面那樣建立被觀察者
2.2.2 建立觀察者

已經包含訂閱

observable.subscribe(new Consumer<String>() {            @Override            public void accept(String s) throws Exception {                //這個accept就等於觀察者的onNext                Log.e(TAG, "accept: "+s);            }        }, new Consumer<Throwable>() {            @Override            public void accept(Throwable throwable) throws Exception {                //onError            }        }, new Action() {            @Override            public void run() throws Exception {            }        });
2.3 方法3: just

2.3.1 產生被觀察者

/** * 產生 被觀察者 * @return */public Observable<String> getObservable(){    //依次發送"just1"和"just2"    return Observable.just("just1","just2");}

2.3.2 定義 觀察者

包含了訂閱

Observable<String> observable = getObservable();observable.subscribe(new Consumer<String>() {    @Override    public void accept(String s) throws Exception {        //這個accept就等於觀察者的onNext        Log.e(TAG, "accept: "+s);    }});
2.4 方法4: fromArray

2.4.1 產生被觀察者

/** * 產生 被觀察者 * @return */public Observable<String> getObservable(){    return Observable.fromArray("from1","from2","from3");}
定義觀察者和上面一致 2.5 方法5: fromCallable

2.5.1 產生被觀察者

/** * 產生 被觀察者 * @return */public Observable<String> getObservable(){    return Observable.fromCallable(new Callable<String>() {            @Override            public String call() throws Exception {                return "fromCallable";            }        });}

2.5.2 定義觀察者和上面一致

還有其他的看下面的列表。 三. 方法列表

名稱 解析
just() 將一個或多個對象轉換成發射這個或這些對象的一個Observable
fromArray() 將一個Iterable, 一個Future, 或者一個數群組轉換成一個Observable
repeat() 建立一個重複發射指定資料或資料序列的Observable
repeatWhen() 建立一個重複發射指定資料或資料序列的Observable,它依賴於另一個Observable發射的資料
create() 使用一個函數從頭建立一個Observable
defer() 只有當訂閱者訂閱才建立Observable;為每個訂閱建立一個新的Observable
range() 建立一個發射指定範圍的整數序列的Observable
interval() 建立一個按照給定的時間間隔發射整數序列的Observable
timer() 建立一個在給定的延時之後發射單個資料的Observable
empty() 建立一個什麼都不做直接通知完成的Observable
error() 建立一個什麼都不做直接通知錯誤的Observable
never() 建立一個不發射任何資料的Observable
相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.