2012-09-02 5 views
0

나는 많은 (초보자들에게) 흥미로운 문제를 겪었다. 코드를 보여 드리겠습니다 :스레드가 완료되기 전에 TextView가 변경되지 않는 이유는 무엇입니까?

startButton.setOnClickListener(new View.OnClickListener() { 

     public void onClick(View v) { 
      startButton.setVisibility(View.GONE); 
      if (!started) { 
       started = true; 
       timer.start(); 
       information.append("Start 1\n"); 
       tester1.start(); 
       if (cores >= 2) { 
        information.append("Start 2\n"); 
        tester2.start(); 
       } 
       if (cores >= 3) { 
        information.append("Start 3\n"); 
        tester3.start(); 
       } 
       if (cores >= 4) { 
        information.append("Start 4\n"); 
        tester4.start(); 
       } 

      } 
     } 
    }); 

타이머이며 모든 테스터는 이전에 선언 된 스레드입니다. 정보가 TextView입니다.

문제는 응용 프로그램을 실행할 때 스레드가 완료 될 때까지 10 초가 걸리는 경우에도 텍스트 뷰가 변경된다는 것입니다. 이것은 에뮬레이터 (android 2.3)와 실제 (android 4.0) 장치에서 발생합니다. 이상한 점은 스레드가 대략 같은 시간에 시작된다는 것입니다.

답변

0

은 기본 스레드의 UI 구성 요소를 모두 업데이트해야합니다. 예를

runOnUiThread(new Runnable() { 
    public void run() { 
     someTextView.setText(someResultVariable); 
    } 
}); 
+0

감사에 대한

. 5 개의 스레드가로드하는 데 약 1.5 초가 걸린 것처럼 보였습니다. 그래서 나는 스플래시 스크린을 넣었고 문제는 사라졌습니다. – Bogdan

관련 문제