2016-05-20 2 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

есть ли шанс, что если-оператор выполняется дважды? – x13

+0

Вы пробовали mTimer.purge(); ? –

+0

@ThisNameBetterBeAvailable no –

ответ

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, но вы отменяете только таймер, пожалуйста, снова прочтите мой ответ –

Смежные вопросы