android倒计时60,Android倒计时countdowntimer应用

66b52468c121889b900d4956032f1009.png

8种机械键盘轴体对比

本人程序员,要买一个写代码的键盘,请问红轴和茶轴怎么选?

CountDownTimer是Android系统提供的倒计时库,应用和源码都很简单。在纯demo情况下,间隔20ms时无误差

应用创建对象

private CountDownTimer mCountDownTimer;

mCountDownTimer = new CountDownTimer(60_000/*总时间*/, 1_000/*间隔时间*/) {

@Override

public void onTick(long millisUntilFinished) {

int second = (int) (millisUntilFinished / 1000);

}

@Override

public void onFinish() {}

};开始倒计时

mCountDownTimer.start();停止,在activity、fragment销毁或者需要时调用

mCountDownTimer.cancel();

源码

源码很简单,利用Handler

private Handler mHandler = new Handler() {

@Override

public void handleMessage(Message msg) {

synchronized (CountDownTimer.this) {

if (mCancelled) {

return;

}

final long millisLeft = mStopTimeInFuture - SystemClock.elapsedRealtime();

if (millisLeft <= 0) {

onFinish();

} else {

long lastTickStart = SystemClock.elapsedRealtime();

onTick(millisLeft);

// take into account user's onTick taking time to execute

//考虑用户的onTick执行时间

long lastTickDuration = SystemClock.elapsedRealtime() - lastTickStart;

long delay;

if (millisLeft < mCountdownInterval) {

// just delay until done

delay = millisLeft - lastTickDuration;

// special case: user's onTick took more than interval to

// complete, trigger onFinish without delay

//特殊情况:用户的onTick事件超出了时间间隔

//完成,立即触发

if (delay < 0) delay = 0;

} else {

delay = mCountdownInterval - lastTickDuration;

// special case: user's onTick took more than interval to

// complete, skip to next interval

//特殊情况:用户的onTick事件超出了时间间隔

//完成,立即触发

while (delay < 0) delay += mCountdownInterval;

}

sendMessageDelayed(obtainMessage(MSG), delay);

}

}

}

};

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值