1. 概述
有时候在开发中,我们需要定义定时器,而定时器各种各样,自己常用的有两种,第一是每隔5秒执行一次操作,时间无上限;第二是定义一个3分钟定时器,每隔5秒执行一次操作,等3分钟时间到了,就停止操作,针对于这两种定时器,一般都有其各自的应用场景。具体用法如下
2. 代码如下
1>:Handler + Runnable实现每隔5秒执行一次操作,时间无上限:
@Override
public void initView() {
mHandler.postDelayed(heartBeatRunnable, HEART_BEAT_RATE);//开启心跳检测
}
private long sendTime = 0L;
//每隔5秒进行一次对长连接的心跳检测
private static final long HEART_BEAT_RATE = 5 * 1000;
// 发送心跳包
private Handler mHandler = new Handler();
private Runnable heartBeatRunnable = new Runnable() {
@Override
public void run() {
if (System.currentTimeMillis() - sendTime >= HEART_BEAT_RATE) {
// 自己需要做的操作写在这里即可
sendData();
sendTime = System.currentTimeMillis();
}
//每隔一定的时间,对长连接进行一次心跳检测
mHandler.postDelayed(this, HEART_BEAT_RATE);
}
};
2>:CountDownTimer定义3分钟定时器,实现每隔5秒执行一次操作:
private void countTimerTask() {
if (countDownTimer == null) {
// 每隔6000 毫秒执行onTick中的方法一次
countDownTimer = new CountDownTimer(1000 * 60 * 3, 6000) {
@Override
public void onTick(long millisUntilFinished) {
String strText = "" + (int) (millisUntilFinished / 1000) + "s 后重发";
// 自己需要做的操作写在这里即可
sendData();
}
// 3分钟定时器执行完毕后,执行此方法
@Override
public void onFinish() {
}
};
}
countDownTimer.start();
}