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