찾다

 >  Q&A  >  본문

android - 初入RX,有一个需求不知道咋写?

需求是这样的:我需要开启一个定时器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中文网2773일 전455

모든 응답(2)나는 대답할 것이다

  • 高洛峰

    高洛峰2017-04-17 17:53:31

    1.repeat는 반복이며 고정된 간격으로 반복됩니다.
    2.delay는 지연 해제를 지연하는 것입니다. 지연 매개변수에 따르지 않고 반복합니다. 반복
    3. 해결책은 초기 지연 및 반복 간격과 함께 테이크 및 맵 작업을 지정할 수 있는 간격을 사용하여 처음 10개를 카운트다운으로 변환하는 것입니다

    으아악

    회신하다
    0
  • 大家讲道理

    大家讲道理2017-04-17 17:53:31

    아직 원인을 파악하지 못했지만 대체 버전을 찾았습니다.

    으아악

    이것은 카운트다운이므로 앞에 지연을 추가하세요.

    으아악

    회신하다
    0
  • 취소회신하다