为什么rxJava没有显示BackPressure启动的任何效果?

时间:2018-07-31 13:14:57

标签: android rx-java2

嗨,我对rxJava非常幼稚,所以如果我的理解正确,请告诉我。根据我的理解,如果我将背压策略与LATEST标志一起使用,则应该获得最新的值。因此,我有一个列表,我在订阅者中使用flowable,但它仍在onNext中打印所有值。还请让我知道如何测试这种反压策略,因为我没有实时数据。

以下是我的代码

  Observable.just(listObj).subscribeOn(Schedulers.io())
                .observeOn(AndroidSchedulers.mainThread()).
                flatMap(new Function<List<String>, Observable<String>>() {
                    @Override
                    public Observable<String> apply(List<String> ints) {
                        return Observable.fromIterable(ints);
                    }
                }).toFlowable(BackpressureStrategy.LATEST).subscribe(new Subscriber<String>() {
            @Override
            public void onSubscribe(Subscription s) {
                s.request(Long.MAX_VALUE);
            }

            @Override
            public void onNext(String s) {
                Log.d("Value", s);
            }

            @Override
            public void onError(Throwable t) {

            }

            @Override
            public void onComplete() {

            }
        });
    }

//////////// 以下是创建arraylist的简单方法

  private ArrayList<String> createListForReturn() {
    try {
        if (listObj != null) {
            listObj.add("Thanks");
            listObj.add("fine");
            listObj.add("working");
            listObj.add("is");
            listObj.add("Flowable");
            listObj.add("Now");
            listObj.add("Flowable");
            listObj.add("For");
            listObj.add("Programme");
            listObj.add("RxJava");
            listObj.add("Second");
            listObj.add("My");
            listObj.add("is");
            listObj.add("This");
            listObj.add(" ");
        }
        return listObj;

    } catch (Exception e) {

        e.printStackTrace();
        return null;
    }
}

0 个答案:

没有答案