当前位置: 代码迷 >> 综合 >> rxJava基础篇之三--观察者
  详细解决方案

rxJava基础篇之三--观察者

热度:44   发布时间:2023-10-15 10:54:49.0

观察者篇:

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()来判断当前订阅状态。