1. 概述
有時(shí)候在開發(fā)中,我們需要定義定時(shí)器,而定時(shí)器各種各樣,自己常用的有兩種,第一是每隔5秒執(zhí)行一次操作,時(shí)間無(wú)上限;第二是定義一個(gè)3分鐘定時(shí)器,每隔5秒執(zhí)行一次操作,等3分鐘時(shí)間到了,就停止操作,針對(duì)于這兩種定時(shí)器,一般都有其各自的應(yīng)用場(chǎng)景。具體用法如下
2. 代碼如下
1>:Handler + Runnable實(shí)現(xiàn)每隔5秒執(zhí)行一次操作,時(shí)間無(wú)上限:
@Override
public void initView() {
mHandler.postDelayed(heartBeatRunnable, HEART_BEAT_RATE);//開啟心跳檢測(cè)
}
private long sendTime = 0L;
//每隔5秒進(jìn)行一次對(duì)長(zhǎng)連接的心跳檢測(cè)
private static final long HEART_BEAT_RATE = 5 * 1000;
// 發(fā)送心跳包
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();
}
//每隔一定的時(shí)間,對(duì)長(zhǎng)連接進(jìn)行一次心跳檢測(cè)
mHandler.postDelayed(this, HEART_BEAT_RATE);
}
};
2>:CountDownTimer定義3分鐘定時(shí)器,實(shí)現(xiàn)每隔5秒執(zhí)行一次操作:
private void countTimerTask() {
if (countDownTimer == null) {
// 每隔6000 毫秒執(zhí)行onTick中的方法一次
countDownTimer = new CountDownTimer(1000 * 60 * 3, 6000) {
@Override
public void onTick(long millisUntilFinished) {
String strText = "" + (int) (millisUntilFinished / 1000) + "s 后重發(fā)";
// 自己需要做的操作寫在這里即可
sendData();
}
// 3分鐘定時(shí)器執(zhí)行完畢后,執(zhí)行此方法
@Override
public void onFinish() {
}
};
}
countDownTimer.start();
}