![](https://img.haomeiwen.com/i9134822/515de618257cb019.jpg)
循环定时器,此工具类不是网上大家用烂的那一份,是博主亲自编写,亲自测试,代码简洁清晰,可满足日常开发。
import android.os.Handler;
/**
* Created on 2021/4/2 13:35
* 循环定时器
* @author Gong Youqiang
*/
public class LoopTimer {
private int intervalMillis; //间隔时间
private boolean running; //运行状态
private Handler handler; //消息处理器
private ExecuteRunnable executeRunnable; //执行Runnable
/**
* 创建一个循环定时器
* @param handler
* @param runnable
* @param intervalMillis
*/
public LoopTimer(Handler handler, Runnable runnable, int intervalMillis) {
this.handler = handler;
this.intervalMillis = intervalMillis;
executeRunnable = new ExecuteRunnable(runnable);
}
/**
* 创建一个循环定时器
* @param runnable
* @param intervalMillis
*/
public LoopTimer(Runnable runnable, int intervalMillis) {
this(new Handler(), runnable, intervalMillis);
}
/**
* 立即启动
*/
public void start(){
running = true;
handler.removeCallbacks(executeRunnable);
handler.post(executeRunnable);
}
/**
* 延迟指定间隔毫秒启动
*/
public void delayStart(){
running = true;
handler.removeCallbacks(executeRunnable);
handler.postDelayed(executeRunnable, intervalMillis);
}
/**
* 立即停止
*/
public void stop(){
running = false;
handler.removeCallbacks(executeRunnable);
}
/**
* 获取间隔毫秒
* @return
*/
public int getIntervalMillis() {
return intervalMillis;
}
/**
* 设置间隔毫秒
* @param intervalMillis
*/
public void setIntervalMillis(int intervalMillis) {
this.intervalMillis = intervalMillis;
}
/**
* 是否正在运行
* @return
*/
public boolean isRunning() {
return running;
}
/**
* 设置消息处理器
* @param handler
*/
public void setHandler(Handler handler) {
this.handler = handler;
}
/**
* 设置执行内容
* @param runnable
*/
public void setRunnable(Runnable runnable) {
executeRunnable.setRunnable(runnable);
}
/**
* 执行Runnable
*/
private class ExecuteRunnable implements Runnable {
private Runnable runnable;
public ExecuteRunnable(Runnable runnable){
this.runnable = runnable;
}
@Override
public void run() {
if(running && runnable != null){
runnable.run();
}
}
public void setRunnable(Runnable runnable) {
this.runnable = runnable;
}
}
}
网友评论