Android RxJava,RxAndroid,rxlifecycle2基本使用

Rx系列成熟已經很久了,許多項目也都用到了,也不解釋什麼了,小編在去年就get過了,一直沒有時間寫今天就簡單的介紹一下基本使用。

首先依賴

compile 'io.reactivex.rxjava2:rxandroid:2.0.1'
compile 'io.reactivex.rxjava2:rxjava:2.1.0'

還要依賴rxlifecycle2主要防止Rx使用不好導致內存泄漏,綁定生命週期來取消訂閱

 compile 'com.trello.rxlifecycle2:rxlifecycle:2.1.0'
 compile 'com.trello.rxlifecycle2:rxlifecycle-components:2.1.0'

首先看一下代碼       

    //創建發佈者

  Observable<Object> observable=Observable.create(new ObservableOnSubscribe<Object>() {
            @Override
            public void subscribe(@NonNull ObservableEmitter<Object> emitter) throws Exception {
                emitter.onNext("shabi");//IO線程操作通知觀察者傳遞“shabi”
            }
        })
        //開啓IO線程其下面的方法都在IO線程中執行,或者在Schedulers.newThread()開一個新的線程
        //如果多個方法想切換線程只需要在對應方法是在添加一個.subscribeOn()即可
       .subscribeOn(Schedulers.io())


        //創建觀察者
        Observe observe=new Observer<Object>() {
                    public void onSubscribe(Disposable d) {
                        
                    }
                    //成功返回信息response值爲shabi
                    public void onNext(Object response) {
                        
                    }

                    public void onError(Throwable e) {
                        
                    }

                    public void onComplete() {
                        
                    }
                }


      //兩者綁定observeOn(AndroidSchedulers.mainThread())切回主線程
      observable.observeOn(AndroidSchedulers.mainThread())
                .subscribe(observe);

rxlifecycle2綁定也很簡單:只需繼承rxlifecycle2提供的activity即可例如RxAppCompatActivity,RxActivity等,然後在發佈者後面添加.compose(lifecycleProvider.bindToLifecycle())),或者 .compose(bindUntilEvent(activityEvent)));  activityEvent填入ActivityEvent裏面的枚舉對應生命週期即可。代碼如下

Observable.create(new ObservableOnSubscribe<Object>() {
            @Override
            public void subscribe(@NonNull ObservableEmitter<Object> emitter) throws Exception {
                doChildThread(emitter);
            }
        }).subscribeOn(Schedulers.io())

                .compose(lifecycleProvider.bindToLifecycle());

另外RxAndroid 還有一些操作符,像just,formArray,timer等,等下一片講解。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章