美文网首页安卓开发相关
Android 常用工具类之 LoopTimer

Android 常用工具类之 LoopTimer

作者: Kevin_小飞象 | 来源:发表于2021-04-07 08:40 被阅读0次
09.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;
        }
    }
}

相关文章

网友评论

    本文标题:Android 常用工具类之 LoopTimer

    本文链接:https://www.haomeiwen.com/subject/wjgfkltx.html