观察者篇:
RxJava的观察者Observer:
Observer<String> observer = new Observer<String>() {@Override
public void onNext(String s) {
Log.d(tag, "Item: " + s);
}
@Override
public void onCompleted() {
Log.d(tag, "Completed!");
}
@Override
public void onError(Throwable e) {
Log.d(tag, "Error!");
}
};
但是还内置实现了一个Subscriber接口,相当于是Observer的扩展:
Subscriber<String> subscriber = new Subscriber<String>() {
@Override
public void onNext(String s) {
Log.d(tag, "Item: " + s);
}
@Override
public void onCompleted() {
Log.d(tag, "Completed!");
}
@Override
public void onError(Throwable e) {
Log.d(tag, "Error!");
}
};而且在实际运行的时候,RxJava的subscribe的过程中,Observer
也会先转换成Subscriber再来进行调用。Subscriber的功能比Observer
更加强大,最大的区别是Subscriber比Observer多了两个方法:
(1)onStart():这个方法在subscribe刚刚开始调用的时候调用,可以
用来做清空数据操作。但是这个方法不能指定线程,所以不能用来更新UI;
(2)unsubscribe():这个方法是用来取消订阅的,因为如果在onPause()
或者是onStop的时候不取消订阅,有内存溢出危险,但是取消订阅之前,
要用isUnsubscribed()来判断当前订阅状态。