android倒计时停止,Android 使用 Timer 做倒计时。实现开始 (start),取消 (cancel),暂停 (pause),重开 (resume)功能...

在 Android 使用 Timer 做倒计时。实现开始 (start),取消 (cancel),暂停 (pause),恢复 (resume)功能

在 Android 开发中,我们很多地方会使用到倒计时功能。可以使用 Timer 做倒计时(ps:虽然我不建议)。

Step00. 初始化

//初始化timer

public void initTimer() {

mTimerTask = new TimerTask() {

@Override

public void run() {

if (curTime == 0) {

curTime = MAX_TIME;

} else {

//计数器,每次减一秒。

curTime -= 1000;

}

Message message = new Message();

message.what = WHAT;

message.obj = curTime;

mHandler.sendMessage(message);

}

};

mTimer = new Timer();

}

//实现更新主线程UI

Handler mHandler = new Handler() {

@Override

public void handleMessage(Message msg) {

switch (msg.what) {

case WHAT:

long sRecLen = (long) msg.obj;

//getCountTimeByLong()———— 毫秒换成00:00:00格式的方式,自己写的。

mTimerTv.setText(TimeTools.getCountTimeByLong(sRecLen));

//如果当前时间等于0时,则运行结束。

if (sRecLen <= 0) {

mTimer.cancel();

curTime = 0;

Toast.makeText(mContext, "结束", Toast.LENGTH_SHORT).show();

}

break;

}

}

};

Step01.销毁

当我们退出 Activity 不需要再使用倒计时功能,或者重新开始计时,都需要销毁上一次的 Timer。

/**

* destory上次使用的 Timer

*/

public void destroyTimer() {

if (mTimer != null) {

mTimer.cancel();

mTimer = null;

}

if (mTimerTask != null) {

mTimerTask.cancel();

mTimerTask = null;

}

}

Step02.开始&启动(start)

//已经结束或者还没有开始时。或者按了暂停标记。

destroyTimer();

initTimer();

// 参数:0,延时0秒后执行;1000,每隔1秒执行1次task。

mTimer.schedule(mTimerTask, 0, 1000);

isPause = false;

isPause 是暂停标记,false 表示没有按过暂停(默认),true 表示按了暂时。

如果是第一次开始则直接使用:

mTimer.schedule(mTimerTask, 0, 1000);

Step03.取消 & 停止(cancel)

//如果 curTime == 0,则不需要执行此操作

if (curTime == 0) {

break;

}

curTime = 0;

isPause = false;

mTimer.cancel();

Step04.暂停(pause)

//如果 curTime == 0,则不需要执行此操作

if (curTime == 0) {

break;

}

if (!isPause) {

isPause = true;

mTimer.cancel();

}

Step05.重开(resume)

if (curTime != 0 && isPause) {

destroyTimer();

initTimer();

mTimer.schedule(mTimerTask, 0, 1000);

isPause = false;

}

Step06.源码

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值