package com.yuyh.sprintnba.utils;
import java.util.Timer;
import java.util.TimerTask;
/**
* 倒计时/定时器
*
* @author yuyuhang.
* @date 16/3/1.
*/
public abstract class AlarmTimer {
private Timer timer;
private TimerTask timerTask;
private int COUNT_DOWN = 60;// 倒计时时间(s)
private int time = COUNT_DOWN;
private boolean isRunning = false;
/**
* 立即执行计时
*/
public void start(long periodTime) {
start(0, periodTime);
}
/**
* 开始执行计时
*
* @param delayTime 首次执行的间隔时间(ms),0:立即执行
*/
public void start(int delayTime, long periodTime) {
shutDown();
isRunning = true;
if (timerTask == null) {
timerTask = new TimerTask() {
@Override
public void run() {
timeout();
}
};
}
timer = new Timer();
timer.schedule(timerTask, delayTime, periodTime); // 延迟delayTime秒执行,间隔1秒
}
/**
* 关闭计时管理器
*/
public synchronized void shutDown() {
isRunning = false;
if (timerTask != null) {
timerTask.cancel();
timerTask = null;
}
if (timer != null) {
timer.cancel();
timer.purge();
timer = null;
}
time = COUNT_DOWN;
}
public boolean isRunning() {
return isRunning;
}
/**
* 间隔时间到后处理的事件
*/
public abstract void timeout();
}