21

Android进阶学习RxJava(二)Observer升级版Subscriber

 3 years ago
source link: https://segmentfault.com/a/1190000037425087
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

Subscriber 翻译过来是订阅者

其实是Observer的升级版,加了一个onStart方法,改改名字

  • 开始编故事

小明(Subscriber)是个宅男,喜欢在家里读杂志

  • 所以小明订了一份花花公子杂志

先介绍宅男小明(Subscriber)

  • 其他三个方法介绍在上一篇文章里有,不明所以的可以往上翻,看第一篇小明的故事
Subscriber <String> subscriber=new Subscriber<String>() {
    @Override // 新方法 小明喜欢看杂志前把纸拿到桌旁
    public void onStart() {
        super.onStart();
    }
    @Override 
    public void onCompleted() {
        LogUtils.e("Completed");
    }
    @Override
    public void onError(Throwable e) {
        LogUtils.e("Error");
    }
    @Override
    public void onNext(String s) {
        LogUtils.e(s);
    }
};

在介绍未来送报员(Observable)

  • 送报员有好多形态,上一篇使用的是原始形态

    • 使用Observable.Create()创建的Observable
  • 送报员的其他形态

    • Observable.just()创建被观察者
    • Observable.from()创建被观察者

OK 一个一个来

  • 送报学会了特技,发射模式,目标,小明的窗户

just

  • just 原样发射 不带包装,杂志直接丢进小明窗户

    • 每个参数发一遍,参数最多为9个,可为null
Observable observable = Observable.just("Hello", "World");

from

  • 用来发送一个数组,先上源码
public static <T> Observable<T> from(T[] array) {
        int n = array.length;
        if (n == 0) {
            return empty();
        } else
        if (n == 1) {
            return just(array[0]);
        }
        return create(new OnSubscribeFromArray<T>(array));
    }
  • 可以理解为,送报员开着火车送报,整车干到小明家
String [] words = {"Hello", "World"};
Observable observable = Observable.from(words);

最后,最重要的一步

  • 两个一定要关联起来,才会有效

    • 理解为,小明必须付钱,才能看到花花公子
observable.subscribe(subscriber);

总结

  • 发简单小数据,用just简单粗暴
  • 数组类大量数据,用from

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK