Android(安卓)使用 Timer 做倒计时。实现开始 (start),取消 (cancel),暂停 (pause),重开 (resume)功能
16lz
2021-01-26
在 Android 使用 Timer 做倒计时。实现开始 (start),取消 (cancel),暂停 (pause),恢复 (resume)功能
在 Android 开发中,我们很多地方会使用到倒计时功能。可以使用 Timer 做倒计时(ps:虽然我不建议)。
Step00. 初始化
//初始化timerpublic 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();}//实现更新主线程UIHandler 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.源码
Github Code
更多相关文章
- PhotoView的使用
- 如何让Android系统或Android应用执行shell脚本
- Android(安卓)纯代码化编码2_基本控件
- 我的Android进阶之旅------>Android实现音乐示波器、均衡器、重
- 2011年Android(安卓)MediaPlayer学习笔记之一
- 【Android笔记】执行命令行语句
- android实操--练习1
- Android使用GridView实现日历功能(详细代码)
- Android(安卓)TabHost设置setCurrentTab(index),当index!=0时,默认加