原创首发
笔记四、利用Timer,TimerTask以及Handler实现有暂停和继续计时简单的计时器

1. 利用TimerTask创建任务实现run方法
绿色的是计时效果,粉色的字是弹幕,下次分享 废话不多说直接上代码
//Message是用来吧数据传给handler的
//WHAT 用于判断是哪个任务发来的消息
final int WHAT = 102;
//新建任务
mTimerTask = new TimerTask() {
@Override
public void run() {
//创建消息
Message message = new Message();
message.what = WHAT;
//秒数自增1
message.obj = seconds++;
//数据传给handler处理
handler.sendMessage(message);
}
};
2. 创建Handler处理从run传来的数据
把数据赋给TextView
final Handler handler = new Handler() {
@Override
public void handleMessage(Message msg) {
switch (msg.what) {
case WHAT:
//设置数据
chargeSecond.setText(msg.obj.toString());
break;
}
}
};
3. 使用Timer的schedule方法,给任务设置延长时间,和隔几秒运行一次
mTimer = new Timer();
//每1秒运行一次run 添加一秒
// 第一个参数是TimerTask,第二个是延迟几毫开始,第三个是每隔几毫秒运行一
// 次run
mTimer.schedule(mTimerTask, 0, 1000);
4.暂停计时和继续计时
其实这个很简单只需把Timer取消了就可以暂停了,继续计时就是再次运行上面三点的程序 runSecond() 这个里面是前面123点的代码
//暂停和重新开始
public void onPauseAndResume(View view) {
if(isPause){
//暂停
mTimer.cancel();
isPause=!isPause;
Toast.makeText(ChargeActivity.this, "暂停", Toast.LENGTH_SHORT).show();
}else{
isPause=!isPause;
//启动
runSecond();
Toast.makeText(ChargeActivity.this, "继续", Toast.LENGTH_SHORT).show();
}
}