Android 替換ScheduledFuture定時器解決修改系統時間引起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掛起的問題可以用這個替換解決