替換定時器解決修改系統時間引起Timer定時器掛起問題

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掛起的問題可以用這個替換解決

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章