Java 如何修复Android中的RxAndroid bug

Java 如何修复Android中的RxAndroid bug,java,android,rx-java2,rx-android,Java,Android,Rx Java2,Rx Android,我想开始学习RxJava和RxAndroid,我写下面的代码。 我将3个数字添加到Observable中,我想将3个数字显示到Toast中,并使用observate 我添加了以下数字:1,2,3 我通过一个视频学习了Rx,并在这个视频中将每个数字显示到Toast 但在我的代码中,只需将最后一个数字显示到土司中 我的意思是:在教程视频中,如果他添加了3个数字则将每3个数字显示在土司中,但在我的代码中只显示最后一个数字 我的代码: public class MainActivity extends

我想开始学习RxJavaRxAndroid,我写下面的代码。
我将3个数字添加到
Observable
中,我想将3个数字显示到
Toast
中,并使用
observate

我添加了以下数字:1,2,3
我通过一个视频学习了Rx,并在这个视频中将每个数字显示到
Toast

但在我的代码中,只需将最后一个数字显示到
土司中

我的意思是:在教程视频中,如果他添加了3个数字则将每3个数字显示在
土司中
,但在我的代码中只显示最后一个数字
我的代码:

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() {

            }
        };
    }
}
public类MainActivity扩展了AppCompatActivity{
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
可观察的可观察的=可观察的。刚好(1,2,3);
observable.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.订阅(观察员());
}
私人观察员(){
返回新的观察者(){
@凌驾
认购的公共无效(一次性d){
}
@凌驾
public void onNext(整数){
Toast.makeText(MainActivity.this,整数+“”,Toast.LENGTH_SHORT.show();
}
@凌驾
公共无效申报人(可丢弃的e){
}
@凌驾
未完成的公共空间(){
}
};
}
}

我如何修复它?

您应该记住,当显示多个祝酒词时,它们会重叠

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

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

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());
observable.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.concatMap(新函数(){
@凌驾
公共可观测资源应用(最终整数){
返回可观察间隔(2,时间单位秒)
.采取(1)
.map(新函数(){
@凌驾
公共整数应用(沿整数){
返回整数;
}
});
}
})
.订阅(观察员());