Android中兩種實現(xiàn)倒計時的方法

Android中兩種實現(xiàn)倒計時的方法

1.rxjava

public static Observable countdown(int time) {
if (time < 0) time = 0;
final int countTime = time;
return Observable.interval(0, 1, TimeUnit.SECONDS)
.subscribeOn(AndroidSchedulers.mainThread())
.observeOn(AndroidSchedulers.mainThread())
.map(new Function() {
@Override
public Integer apply(@NonNull Long increaseTime) throws Exception {
Log.d("RxCountDown", "increaseTime.intValue():" + increaseTime.intValue());
return countTime - increaseTime.intValue();
}
})
.take(countTime + 1);
}
private void countdown2() {
RxCountDown.countdown(120)
.doOnSubscribe(new Consumer() {
@Override
public void accept(Disposable disposable) throws Exception {
Log.d("MainActivity", "即時開始");
startTime = System.currentTimeMillis();
}
})
.subscribe(new Observer() {
@Override
public void onSubscribe(@NonNull Disposable d) {
Log.d("MainActivity", "記時開始");
}
@Override
public void onNext(@NonNull Integer integer) {
Log.d("MainActivity", "當(dāng)前時間"+integer);
}
@Override
public void onError(@NonNull Throwable e) {
}
@Override
public void onComplete() {
Log.d("MainActivity", "計時結(jié)束");
Log.d("MainActivity", "System.currentTimeMillis()-startTime:" + (System.currentTimeMillis() - startTime)/1000.0);
}
});
}

2、sdk25中的CountDownTimer

private void countDown() {
mStartTime = System.currentTimeMillis();
index = 120;
new CountDownTimer(120*1000,1000){
@Override
public void onTick(long millisUntilFinished) {
Log.d("MainActivity", "l:" + Math.round((millisUntilFinished/1000.0)));
Log.d("MainActivity", "index:" + (index--));
}
@Override
public void onFinish() {
Log.d("MainActivity", "index:" + 0);
long endTime = System.currentTimeMillis();
Log.d("MainActivity", "endTime-mStartTime:" + (endTime - mStartTime)/1000.0);
}
}.start();
}

以上兩種倒計時的時間差都是毫秒級的,區(qū)別在于第二種不能取到最后一秒的,這個在onFinish處理就好
項目地址

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 179,323評論 25 708
  • 前言 LZ-Says:今天收到轉(zhuǎn)正通知了,內(nèi)心也就12s開心,隨之而來的就是不平不淡。16年10月18號入職,感覺...
    靜心Study閱讀 1,944評論 0 2
  • 拒絕所有的夸贊之詞 愿我心明慧 拒絕所有的否定之語 我將自我鞭策上進 收起鋒芒,潛心修煉!
    半夏1998_2005閱讀 191評論 0 0
  • 等你痛得晚上睡不著才來找我嗎?調(diào)理好月經(jīng),氣色好,身心愉悅是我們共同的目標(biāo)。 有這方面問題的朋友就添加吧 宋長平大...
    a67829dced75閱讀 487評論 0 0
  • 人們常說生命的本錢就是有一個健康的好身體,無論自己有多么的富裕、學(xué)歷多么的高、官兒多么的大,只要你自己的身體某些方...
    Cinko閱讀 419評論 0 17

友情鏈接更多精彩內(nèi)容