2014-01-15 2 views
0

Я пытаюсь создать таймер, отсчитывающий в секундах, и каждый раз обновляет TextView, чтобы показать оставшееся время. Из того, что я могу сказать, код таймера работает нормально (1 секунда между событиями и конвертирует с hrs и mins в secs fine), потому что я тестировал его вне Android и используя Log.d() в android. Обновление текстового поля - вот что дает мне проблемы. Я получал нулевые указатели, когда первоначально пытался обновить textview, потому что только поток пользовательского интерфейса может получить доступ к пользовательскому интерфейсу (моя интерпретация сообщения об ошибке), и я добавил runOnUiThread(), который позволяет ему получать доступ и обновляться, но теперь он не обновить правильно. Я думаю, что это проблема, но я не совсем уверен и не знаю достаточно, чтобы понять, как ее исправить, или придумать лучший способ сделать это. Я бы оценил еще один набор глаз. БлагодаряПроблемы с созданием таймера в android

final static int delay = 1000; 
final static int period = 1000; 


public void start(int hin, int min) { 
     run = true; 
     int hrinsec = (hin * (60 * 60)); 
     int mininsec = (min * 60); 
     secs = hrinsec + mininsec; 
     run = false; 
     interval = secs; 
     Timer t = new Timer(); 
     t.scheduleAtFixedRate(new TimerTask() { 
      public void run() { 
       // Convert seconds back to hrs and mins 
       hrsFromSecs(secs); 
       minsFromSecs(secs); 
       secsFromSecs(secs); 
       dint total = hours + minutes + seconds; 
       output = hours + " Hours " + minutes + " Minutes " + seconds 
         + " Seconds"; 
//    Countdown and update the textview 
       runOnUiThread(new Runnable() { 
        @Override 
        public void run() { 
         timer.setText(output); 
       }}); 

        secs = secs - 1; 
        checkIfDone(total); 
      } 
     }, delay, period); 
    } 
+0

Вы должны использовать AsyncTask для синхронизации задач. Не запускайте в потоке пользовательского интерфейса. – ChuongPham

ответ

0

Использование CountDownTimer нет необходимости изобретать что-нибудь

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