2014-02-02 2 views
1

Я создал TimerTask со следующим кодом:Android: Перезапуск Таймер

Screen_Timer_Task = new TimerTask() { 

    @Override 
    public void run() { 

    runOnUiThread(new Runnable() 
    { 
      @Override 
      public void run() 
      { 

        // Do my stuff 

      } 
    }); 

    } 

    }; 

Затем я начинаю что TimerTask с этим:

Screen_Timer.scheduleAtFixedRate(Screen_Timer_Task, 1, 1); 

Это работает отлично. Но после вызова

Screen_Timer.cancel(); 

    Screen_Timer.purge(); 

не будет перезапущен с

Screen_Timer.scheduleAtFixedRate(Screen_Timer_Task, 1, 1); 

Приложение просто сбой !!

ответ

1
public void start_my_timer() 
{ 

    Screen_Timer_Task = new TimerTask() { 

     @Override 
     public void run() { 


       runOnUiThread(new Runnable() 
       { 
        @Override 
        public void run() 
        { 
           // Do my stuff 
        } 
       }); 

     } 

    }; 

    Screen_Timer.schedule(Screen_Timer_Task, 1, 1); 

} 
+0

Это просто работает в первый раз. –

+0

Создайте новый 'Таймер' каждый раз –

+0

Да. Это было решением. Большое спасибо!! –

0

«Задача может быть запущен один раз» из документации timerTask

Вы должны создать TimerTask объект еще раз, если вы хотите использовать его.

Также сделайте Timer еще раз, потому что cancel(): «... Отменяет таймер и все запланированные задачи Если есть в настоящее время работает задача это не влияет Нет больше задач может быть запланировано на этот таймер Последующие вызовы не делать ничего»

+0

Нет, это не сработало. Я помещал это в общедоступную функцию void и вызывал ее, но во второй раз приложение терпит крах. –

+0

Итак, покажите LogCat, который у вас есть –

+0

Я отправляю приложение на свое устройство через LAN-соединение, поэтому у меня нет LogCat. –

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