gpt4 book ai didi

java - 如何修复 Android 中的 RxAndroid 错误

转载 作者:行者123 更新时间:2023-11-29 18:35:08 26 4
gpt4 key购买 nike

我想开始学习 RxJavaRxAndroid 并编写以下代码。
我在 Observable 中添加了 3 个数字我想将这 3 个数字 显示为 ToastObserver !
我添加了这个数字:1,2,3
我通过一个视频学习 Rx,在这个视频中将每个数字显示为 Toast .
但在我的代码中,只需将 last 数字显示为 Toast .
我的意思是:在教程视频中,如果他添加了3 个数字,将每 3 个数字显示为 Toast ,但在我的代码中只显示last 号码!
我的代码:

public class MainActivity extends AppCompatActivity {

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

Observable<Integer> observable = Observable.just(1, 2, 3);

observable.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(observer());
}

private Observer<Integer> observer() {
return new Observer<Integer>() {
@Override
public void onSubscribe(Disposable d) {

}

@Override
public void onNext(Integer integer) {
Toast.makeText(MainActivity.this, integer + "", Toast.LENGTH_SHORT).show();
}

@Override
public void onError(Throwable e) {

}

@Override
public void onComplete() {

}
};
}
}

我该如何解决?

最佳答案

您应该记住,当显示多个 Toast 时,它们会重叠。

您可以看到最后一个 toast ,因为 toast 会立即按顺序显示,彼此的时间相同,并且它们会重叠,您可以看到最后一个。

使用一些日志进行测试或在每个发出的项目之间放置一个间隔。要添加此功能,请使用 concatMap 函数,例如:

observable.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.concatMap(new Function<Integer, ObservableSource<Integer>>() {
@Override
public ObservableSource<Integer> apply(final Integer integer) {
return Observable.interval(2, TimeUnit.SECONDS)
.take(1)
.map(new Function<Integer, Integer>() {
@Override
public Integer apply(Integer aLong) {
return integer;
}
});
}
})
.subscribe(observer());

关于java - 如何修复 Android 中的 RxAndroid 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54684615/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com