Skip to content

Latest commit

 

History

History
130 lines (105 loc) · 4.34 KB

TimerManager.md

File metadata and controls

130 lines (105 loc) · 4.34 KB

定时器工具类

使用演示类 TimerActivity 介绍了配置参数及使用

/**
 * 主要是为了控制整个项目的定时器, 防止定时器混乱、忘记关闭等情况, 以及减少初始化等操作代码
 */

项目类结构

  • 定时器管理类(TimerManager):定时器管理类

  • 定时器(DevTimer):定时器封装类,配合定时器管理类使用全局控制

框架亮点

  • 控制整个项目定时器,防止定时器混乱、忘记关闭等情况,统一控制管理

  • 内部自动添加定时器到集合中,便于项目控制处理

  • 支持关闭指定 tag timer、all timer,获取指定 Timer

  • 内部封装 Timer,支持获取执行次数、是否无限循环、TAG 标记等通用功能

API 文档

方法 注释
getTag 获取 TAG
getUUID 获取 UUID HashCode
getDelay 获取延迟时间 ( 多少毫秒后开始执行 )
getPeriod 获取循环时间 ( 每隔多少毫秒执行一次 )
isRunning 判断是否运行中
isMarkSweep 是否标记清除
getTriggerNumber 获取已经触发的次数
getTriggerLimit 获取允许触发的上限次数
isTriggerEnd 是否触发结束 ( 到达最大次数 )
isInfinite 是否无限循环
setHandler 设置 UI Handler
setCallback 设置回调事件
start 运行定时器
stop 关闭定时器
setTag setTag
setDelay setDelay
setPeriod setPeriod
getLimit getLimit
setLimit setLimit
build build
callback 触发回调方法
方法 注释
addContainsChecker 添加包含校验
getSize 获取全部定时器总数
recycle 回收定时器资源
getTimer 获取对应 TAG 定时器 ( 优先获取符合的 )
getTimers 获取对应 TAG 定时器集合
closeAll 关闭全部定时器
closeAllNotRunning 关闭所有未运行的定时器
closeAllInfinite 关闭所有无限循环的定时器
closeAllTag 关闭所有对应 TAG 定时器
closeAllUUID 关闭所有对应 UUID 定时器

使用示例

DevTimer timer = new DevTimer.Builder(1500L)
        .setDelay(100L) // 延迟时间 ( 多少毫秒后开始执行 )
        .setPeriod(1500L) // 循环时间 ( 每隔多少毫秒执行一次 )
        .setTag(TAG) // 定时器 TAG
        .setLimit(19) // 触发次数上限 ( 负数为无限循环 )
        .build(); // 构建定时器
timer.setCallback(new DevTimer.Callback() {
    @Override
    public void callback(
            DevTimer timer,
            int number,
            boolean end,
            boolean infinite
    ) {
        DevEngine.getLog().dTag(TAG, "是否 UI 线程: %s", HandlerUtils.isMainThread());
    }
});
// 设置了 Handler 则属于 UI 线程触发回调
timer.setHandler(mUiHandler);
// 运行定时器
timer.start();
// 关闭定时器
timer.stop();

int uuid = 0;
// 关闭所有对应 UUID 定时器
TimerManager.closeAllUUID(uuid);
// 关闭所有对应 TAG 定时器
TimerManager.closeAllTag(TAG);
// 关闭所有无限循环的定时器
TimerManager.closeAllInfinite();
// 关闭所有未运行的定时器
TimerManager.closeAllNotRunning();
// 关闭全部定时器
TimerManager.closeAll();
// 回收定时器资源
TimerManager.recycle();
// 获取全部定时器总数
TimerManager.getSize();
// 获取对应 UUID 定时器 ( 优先获取符合的 )
TimerManager.getTimer(uuid);
// 获取对应 TAG 定时器 ( 优先获取符合的 )
TimerManager.getTimer(TAG);
// 获取对应 UUID 定时器集合
TimerManager.getTimers(uuid);
// 获取对应 TAG 定时器集合
TimerManager.getTimers(TAG);