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

Android 为什么rxJava没有显示任何背压启动的效果?,android,rx-java2,Android,Rx Java2,嗨,我对rxJava很幼稚,所以请让我知道我的理解是否正确。根据我的理解,如果我使用带有最新标志的背压策略,我应该得到最新的值。所以我有一个列表,我正在使用flowable with subscriber,但它仍然在onNext中打印所有值。另外,请让我知道如何测试这个背压策略,因为我没有实时数据 下面是我的代码 Observable.just(listObj).subscribeOn(Schedulers.io()) .observeOn(AndroidSc

嗨,我对rxJava很幼稚,所以请让我知道我的理解是否正确。根据我的理解,如果我使用带有最新标志的背压策略,我应该得到最新的值。所以我有一个列表,我正在使用flowable with subscriber,但它仍然在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() {

            }
        });
    }
Observable.just(listObj).subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())。
flatMap(新函数(){
@凌驾
公共可观察应用(列表整数){
返回可观测。可观测(整数);
}
}).toFlowable(BackpressureStrategy.LATEST).subscribe(新订户(){
@凌驾
认购的公共无效(认购){
s、 请求(长最大值);
}
@凌驾
public void onNext(字符串s){
Log.d(“值”,s);
}
@凌驾
公共作废登记员(可丢弃的t){
}
@凌驾
未完成的公共空间(){
}
});
}
/////////// 下面是创建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;
    }
}
private ArrayList createListForReturn(){
试一试{
if(listObj!=null){
listObj.添加(“谢谢”);
添加(“罚款”);
列表对象添加(“工作”);
列表对象添加(“is”);
列表对象添加(“可流动”);
添加(“现在”);
列表对象添加(“可流动”);
列表对象添加(“为”);
列表对象添加(“计划”);
添加(“RxJava”);
列表对象添加(“第二”);
列表对象添加(“我的”);
列表对象添加(“is”);
列表对象添加(“本”);
listObj.添加(“”);
}
返回listObj;
}捕获(例外e){
e、 printStackTrace();
返回null;
}
}

“背压策略”在Rx中的意思是,如果您不能以比上游更快的速度消耗
onNext
事件,您希望采用什么策略?。在您的情况下,您消耗所有事件的速度足够快,因此不需要/实施该策略。阅读文档以获得更简明的信息-@MarkKeen谢谢,那么您能给我提供一些如何模拟背压策略的示例吗?阻止当前线程或执行一个比消费者(订户)的
onNext
通话间隔时间更长的计算-看一下文档。@你是说这个吗。observeOn(AndroidSchedulers.mainThread())在这个特定实例中,是将在订阅服务器/观察者上观察
onNext
调用的线程-您真的想将主线程用作测试平台吗?无论如何,不应在主线程上执行所有繁重/阻塞任务(如果可能)。