Android 为什么rxJava没有显示任何背压启动的效果?
嗨,我对rxJava很幼稚,所以请让我知道我的理解是否正确。根据我的理解,如果我使用带有最新标志的背压策略,我应该得到最新的值。所以我有一个列表,我正在使用flowable with subscriber,但它仍然在onNext中打印所有值。另外,请让我知道如何测试这个背压策略,因为我没有实时数据 下面是我的代码Android 为什么rxJava没有显示任何背压启动的效果?,android,rx-java2,Android,Rx Java2,嗨,我对rxJava很幼稚,所以请让我知道我的理解是否正确。根据我的理解,如果我使用带有最新标志的背压策略,我应该得到最新的值。所以我有一个列表,我正在使用flowable with subscriber,但它仍然在onNext中打印所有值。另外,请让我知道如何测试这个背压策略,因为我没有实时数据 下面是我的代码 Observable.just(listObj).subscribeOn(Schedulers.io()) .observeOn(AndroidSc
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
调用的线程-您真的想将主线程用作测试平台吗?无论如何,不应在主线程上执行所有繁重/阻塞任务(如果可能)。