2012-04-13 2 views
0

У меня есть таймер, работающий в потоке. Это код:Stop Timer in Thread Android

timer = new Timer(); 
start_timer = new Thread(new Runnable() { 
    public void run() { 
    timer.schedule(new TimerTask() { 

     @Override 
     public void run() { 
     myHandler.post(new Runnable() { 
      public void run() { 
      Log.e("asd", String.valueOf(tmp_chiamata_id)); 

      //do somethings 

      Toast.makeText(getApplicationContext(), start_timer.getState().toString(), Toast.LENGTH_LONG).show(); 
      } 
     }); 
     } 
    }, 0, 1000); 
    } 
}); 
start_timer.start(); 

Чтобы остановить таймер я пишу это:

if(timer != null){ 
     timer.cancel(); 
     start_timer.interrupt(); 
} 

Проблема заключается в том, что LogCat остановка для отображения ASD но тосты продолжающегося шоу сообщения Остановлено. Я также попытался остановить поток с помощью start_timer.stop(), но он все равно не работает. Как я могу сделать? Спасибо, Маттиа

+0

Вы знаете, таймер начинает свою собственную нить? также все, что вы собираетесь делать, что эффекты ui должны быть сделаны через обработчик – L7ColWinters

+0

Я решил. Таймер и поток остановились правильно, произошла другая ошибка, не зависящая от этих двух объектов – pindol

ответ

0

Может быть вызовом продувки() метод от объекта таймера поможет. Как сказано в документе,

«Удаляет все отмененные задачи из очереди задач. Если других заданий нет, тогда после этого вызова они могут быть собраны в мусор».