美文网首页
Rxjava实现计时(倒计时/暂停后继续计时)

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

作者: Eva_Gao | 来源:发表于2019-12-18 09:29 被阅读0次

前段时间项目完成了一个音频播放的项目,里面各种计时,之前使用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实现计时(倒计时/暂停后继续计时)

      本文链接:https://www.haomeiwen.com/subject/jnqenctx.html