1. 程式人生 > >Android RxJava,RxAndroid,rxlifecycle2基本使用

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等,等下一片講解。