1,rxjava是什么?
是一个异步请求的库
2,rxjava的好在哪里?
简洁
3,
observable(被观察者) ----通过observable.subscribe(observer)建立关系---订阅observer(观察者)
4,actionX可以自定义observer的onnext oncomple onerror ,通过参数传入 observable 相当于 观察者中的三个回调的自定义形式
例如:observable.subscribe(onNextAction, onErrorAction, onCompletedAction);
Action1<Throwable> onErrorAction = new Action1<Throwable>() {
@Override
public void call(Throwable throwable) {
}
};
Action0 onCompletedAction = new Action0() {
@Override
public void call() {
}
};
@Override
public void call(Throwable throwable) {
}
};
Action0 onCompletedAction = new Action0() {
@Override
public void call() {
}
};
5,Scheduler线程切换
subscribeOn() 函数 指定被观察者执行的线程 也就是 调用onnext on。。。 的回调 call里面在哪个线程执行
observeOn() 函数 指定观察者 也就是onnext。。。里面在哪个线程执行
Schedulers.immediate(): 默认
Schedulers.newThread(): 新线程。
Schedulers.io(): I/O 操作 网络 文件读取
Schedulers.computation(): 计算
AndroidSchedulers.mainThread(),androidUI线程
例子:
Observable.create(new Observable.OnSubscribe<String>() { @Override public void call(Subscriber<? super String> subscriber) { subscriber.onNext(""); subscriber.onCompleted(); } }) .subscribeOn(Schedulers.io()) // 指定 被观察者 (也就是call)发生在 IO 线程 .observeOn(AndroidSchedulers.mainThread()) // 指定 观察者 onNext--ONc--OnE 的回调发生在主线程 .subscribe(new Subscriber<String>() { @Override public void onCompleted() { } @Override public void onError(Throwable e) { } @Override public void onNext(String s) { } });