RxJava(Android)PublishProcessor无法正常工作

时间:2018-04-26 10:29:42

标签: android system.reactive reactive

我想使用像这样工作的PublishProcessor:

  • 提供了一些初始化数据(当用户滚动视图时随机显示 - 示例中为整数),
  • 它做了一些后台工作(根据init数据下载数据)
  • 完成下载时通知新下载的数据类型(示例中的字符串)

应该一直准备好接收和处理新的初始数据。

我已经准备好了简单的代码来测试它,但它没有用。

PublishProcessor processor = PublishProcessor.create();
    processor.map(new Function<Integer, String>() {
        @Override
        public String apply(Integer o) throws Exception {
            Thread.sleep(1000);
            DevLog.d("test","executing "+o);
            return String.valueOf(o)+"aaa";
        }
    }).subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).subscribe(new Subscriber<String>() {
        Subscription sub;
        @Override
        public void onSubscribe(org.reactivestreams.Subscription s) {
            DevLog.d("test","onsubscribe "+s);
            sub = s;
            sub.request(1);
        }

        @Override
        public void onNext(String s) {
            DevLog.d("test","next "+s);
            sub.request(1);
        }

        @Override
        public void onError(Throwable t) {
            DevLog.d("test","error "+t);
        }

        @Override
        public void onComplete() {
            DevLog.d("test","complete");
        }
    });
    processor.onNext(666);
    processor.onNext(123);
    processor.onNext(456);
    DevLog.d("test","nextsent");

我进入logcat的所有内容是:

  • onsubscribe 0
  • nextsent

我宁愿期待:

  • nextsent
  • 执行666
  • 执行123
  • 执行456
  • next 666aaa
  • next 123aaa
  • next 456aaa

0 个答案:

没有答案