-
Observable(被观察者)
- create(new ObservableOnSubscribe())
通过Observable.create()创建一个Observable对象 - subscribeOn(Schedulers.io())
subscribeOn()改变调用它之前代码的线程
相当于开了一个新线程 - observeOn(AndroidSchedulers.mainThread())
observeOn()改变调用它之后代码的线程 - subscribe(new Observer())
- create(new ObservableOnSubscribe())
-
Observable:在观察者模式中称为“被观察者”;
Observer:观察者模式中的“观察者”,可接收Observable发送的数据;
subscribe:订阅,观察者与被观察者,通过subscribe()方法进行订阅;
观察者,可以订阅(Subscribe)或者注册(Register)被观察者类似于监听器,当某一个操作使被观察者触发了判断条件就通知观察者,做出相应的反应,
比如: 用水壶烧水,水开了赶紧关火,水壶不管温度多高一直烧,人去判断什么时候关火 -
观察者被观察者中间发送数据是用ObservableEmitter发射器,由发射器来发送数据
public static void loginAsync(final Context context, final String loginName,
final String password, final Consumer<LoginResult> action) {
//创建一个被观察者
Observable
.create(new ObservableOnSubscribe<LoginResult>() {
@Override
public void subscribe(ObservableEmitter<LoginResult> e) throws Exception {
//调用本类的login方法执行登陆
LoginResult result = login(context, loginName, password);
e.onNext(result);
}
})
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
//被观察者订阅观察者
.subscribe(new Observer<LoginResult>() {
@Override
public void onComplete() {
}
@Override
public void onError(Throwable e) {
}
@Override
public void onSubscribe(Disposable d) {
}
@Override
public void onNext(LoginResult result) {
//当被观察者执行完了操作发给观察者,就执行传入的回调函数
if (action != null) {
try {
action.accept(result);
Log.w(TAG,"执行完毕");
} catch (Exception e) {
e.printStackTrace();
}
}
}
});
}