Android 用ScheduledFuture定时器替Timer换解决修改系统时间引起Timer定时器挂起问题
大家知道平时使用的Timer定时器时,如果修改了系统时间(将系统时间修改到当前前面的时间)会引起imer定时器挂起
我们替换定时任务ScheduledFuture 可以避免这个问题
简单用法如下:
启动计时:
private ScheduledExecutorService service;
private ScheduledFuture<?> future;
private void startTimer() {
//初始化参数说明
//public ScheduledFuture<?> scheduleAtFixedRate(Runnable command, 执行线程
// long initialDelay, 初始化延时
// long period, 时间间隔
// TimeUnit unit); 时间单位(秒、毫秒等)
if (service == null) {
service = Executors.newScheduledThreadPool(2);//线程空间
future = service.scheduleAtFixedRate(() -> {
// 定时任务执行代码
}, KEEPLIVE_TIME / 2, KEEPLIVE_TIME,TimeUnit.MILLISECONDS);
}
}
停止计时:
private void cancelTimer() {
EvtLog.d(TAG, "cancelTimer");
if (future != null) {
future.cancel(true);
future = null;
}
service = null;
}
希望遇到timer挂起的问题可以用这个替换解决