android - 初入RX,有一个需求不知道咋写?
PHP中文网
PHP中文网 2017-04-17 17:51:31
0
2
448

需求是这样的:我需要开启一个定时器A,当A定时到50秒的时候,开始开启第二个定时器B,A结束,B开始倒数10秒,每一秒发出一个通知:
然后,我用RX这样做了:

Observable<Long> observable =
                Observable
                        .timer(50, TimeUnit.SECONDS)
                        .repeat(10)
                        .delay(1,TimeUnit.SECONDS);

        subscription = observable
                .observeOn(AndroidSchedulers.mainThread())
                .subscribe(aLong -> {
                    //发通知倒计时
                    Log.e("note","flag");
                });

想了半天,好像没啥问题,但是跑起来就有问题了,发现,50秒时挺准的,然后到了第二个定时器,也就是.repeat(10),最后打印的,按照理想,应该是每隔一秒打印,但是实际上相隔了好多秒!。。。
找了半天也没找出啥,难道是我理解错误这几个操作符了?求救大神!

PHP中文网
PHP中文网

认证0级讲师

全員に返信(2)
小葫芦

1.repeat は繰り返しであり、一定の間隔で繰り返されません。固定間隔の場合は、interval を使用します。
2.lay は、間隔をあけて実行するのではなく、繰り返しの後に遅延を追加します。繰り返し
3. 解決策は、初期遅延と繰り返し間隔を指定できる間隔を使用し、さらにテイクおよびマップ操作を使用して、最初の 10 を取得してカウントダウン

に変換することです。 リーリー
いいねを押す +0
大家讲道理

原因はまだわかりませんが、代替バージョンを見つけました:

リーリー

これはカウントダウンであり、前に遅延を追加するだけです:

リーリー
いいねを押す +0
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート