Pertanyaan Android RX - Observable.timer hanya menembak sekali


Jadi saya mencoba untuk membuat suatu pengamatan yang kebakaran secara teratur, tetapi untuk beberapa alasan yang saya tidak tahu, itu hanya sekali kebakaran. Adakah yang bisa melihat apa yang saya lakukan salah?

Observable<Long> observable = Observable.timer(delay, TimeUnit.SECONDS, Schedulers.io());

        subscription =  observable
                .subscribeOn(Schedulers.io())
                .observeOn(AndroidSchedulers.mainThread())
                .subscribe(new Action1<Long>() {
                    @Override
                    public void call(Long aLong) {
                        searchByStockHelper.requestRemoteSearchByStock();
                    }
                });

penundaan saat ini diatur ke 2


26
2017-09-11 12:59


asal


Jawaban:


Dokumentasi untuk operator pengatur waktu mengatakan ini:

Buat yang Dapat Diamati yang memancarkan item tertentu setelah penundaan yang diberikan

Dengan demikian perilaku yang Anda amati diharapkan- timer() hanya memancarkan satu item setelah penundaan.

Interval operator, di sisi lain, akan memancarkan item yang diberi jarak dengan interval tertentu.

Misalnya, Pengamatan ini akan mengeluarkan item setiap detik:

Observable.interval(1, TimeUnit.SECONDS);

46
2017-09-11 13:21



Saya tahu topik sudah tua tapi mungkin untuk pengunjung masa depan. (Menghitung mundur 5 menit)

Disposable timerDisposable = Observable.interval(1,TimeUnit.SECONDS, Schedulers.io())
        .take(300)
        .map(v -> 300 - v)
        .subscribe(
            onNext -> {
                //on every second pass trigger
            },
            onError -> {
                //do on error
            },
            () -> {
                //do on complete
            },
            onSubscribe -> {
                //do once on subscription
            });

11
2017-08-04 18:21