Rxjava实现计时(倒计时/暂停后继续计时)

前段时间项目完成了一个音频播放的项目,里面各种计时,之前使用hander实现的,但是里面计时太多了,当计时变为120秒的时候,出现误差,各种不准确,时间越长 ,误差越大。然后就想到了用RxJava中的计时。

源码如下:

public static FlowableintervalRange(long start, long count, long initialDelay, long period, TimeUnit unit) {

return intervalRange(start, count, initialDelay, period, unit, Schedulers.computation());

}

其中start:表示开始计时的时间,例如想从0开始(如果你暂停计时,可记录暂停时的时间,然后点击开始的时候将这个值传入便可以实现继续计时了)

count:表示你需要计时总时间,记得需要在你的总时间基础上+1

initialDelay:表示 初始延迟,你如你想延时多久在执行,可以传入你想传入的参数

period:周期

computation:TimeUnit.SECONDS一般都会是秒,当然也开业是时,分,天等

Disposable mDisposable = Flowable.intervalRange(starTime, answerTime +1, 0, 1, TimeUnit.SECONDS)

.subscribeOn(Schedulers.io())

.observeOn(AndroidSchedulers.mainThread())

.doOnNext(aLong -> {

            mTvTime.setText(aLong +"S/" +answerTime +"S");

        })

.doOnComplete(() -> {

mTvTime.setText(answerTime +"S/" +answerTime +"S");

            playRecordTime =answerTime;

        }).subscribe();

你可能感兴趣的:(Rxjava实现计时(倒计时/暂停后继续计时))