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();

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容