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