天天看點

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