2014-01-15 4 views
0

초 단위로 카운트 다운하고 매번 TextView를 업데이트하여 남은 시간을 표시하는 타이머를 작성하려고합니다. 내가 타이머 코드 (이벤트 사이의 1 초 및 괜찮아 초 분으로 변환 이벤트 사이에 일하고있다) 말할 수있는 안드로이드 및 Log.d() 안드로이드 외부에서 테스트 한 원인. textview를 업데이트하면 문제가 발생합니다. null 포인터를 얻으려고했는데, 원래 UI 뷰의 스레드가 UI 스레드 (오류 메시지에 대한 해석)에 액세스 할 수 있기 때문에 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

를 재발견합니다. UI 스레드에서 실행하지 마십시오. – ChuongPham

답변

0

사용 CountDownTimer 필요가 없습니다 당신은 작업 타이밍에 대한 AsyncTask를 사용해야합니다 아무것도

관련 문제