2016-05-20 61 views
0

我在我的應用程序中使用服務。它是一個啓動程序。我在我的服務中使用了定時器,池中頻率爲1分鐘。我的應用程序在正常情況下工作正常。但是當我重新啓動我的電話從我的計時器運行一分鐘兩次,例如:定時器在我的服務中運行兩次

11:00:15,11:00:23,11:01:15,11:01:23,11:02 :15,11時02分23秒.......

請幫我人在這裏是我的服務代碼:

if (mTimer != null) { 
      mTimer.cancel(); 
      mTimer = new Timer(); 
      // mTimer.schedule(new TimeDisplayTimerTask(), file_saving_time, file_saving_time); 
      mTimer.schedule(new TimeDisplayTimerTask(), file_saving_time, file_saving_time); 

     } else { 
      // recreate new 
      mTimer = new Timer(); 
      mTimer.schedule(new TimeDisplayTimerTask(), file_saving_time, file_saving_time); 
     } 

我開始從活動類的onCreate(),我的服務和摧毀它來自onDestroy()方法。

+0

是否有這個if語句運行兩次任何機會,所以取消了嗎? – x13

+0

你有沒有試過mTimer.purge(); ? –

+0

@ThisNameBetterBeAvailable否 –

回答

0

嘗試此操作始終在創建新實例之前取消Timer

這裏TimeDisplayTimerTask()對象被創建之前每次

public class MyTimer extends TimerTask 
    { 
     @Override 
     public void run() { 

       } 
    } 

if (mTimer != null) { 
     try{ 
     mTimer.cancel(); 
} 
catch(Exception ee){} 
try{ 
    mytimer.cancel(); 
}catch(Exception ee){} 


      mTimer = new Timer(); 
      mytimer=new MyTimer(); 
      mTimer.schedule(mytimer, file_saving_time, file_saving_time); 


     } else { 
      // recreate new 
mytimer=new MyTimer(); 
      mTimer = new Timer(); 
      mTimer.schedule(mytimer, file_saving_time, file_saving_time); 
     } 
+0

我已經取消了定時器,如果已經存在我的代碼檢查,否則條件。 –

+0

@ShivanshuVerma這裏TimeDisplayTimerTask()對象每次都在創建,所以取消它之前你不取消timertask,但你只取消定時器,請再次正確地讀我的答案 –

相關問題