2010-12-11 14 views
2

Android에서 스레드를 시도하기 위해이 코드를 작성했지만 작동하지 않습니다.왜이 스레드가 작동하지 않습니까?

@Override 
    public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 

    Thread t = new Thread() { 
      @Override public void run() { 
          int i = 0; 
       while(true) { 
           i += 5; 
           if(i == 1000000) 
             break; 
          } 
      } 
     }; 
    t.run(); 
    } 

나는, GUI 동결을 일부 GUI를 가지고 스레드가 작동 할 때 (내가 < 1000000). 그러나 스레드가 완료되면 (i == 1000000) 모든 것이 잘 동작합니다. 무엇이 잘못 되었나요? 대한

// 미안 내 영어

+0

당신은 @ Jon에 의해 설명 된 것과 같이 당신이 틀린 방법을 부르는 것을보기 위해 5 초 동안 googled 할 수 있었다. – Falmarri

답변

6

당신은 새 스레드를 시작하지 않고 UI 스레드에서 모든 코드를 실행하는 것을 의미한다 t.run()를 호출하고 있습니다.

t.start()을 호출하면 대신 새 스레드가 시작되고 해당 스레드의 run 메서드에서 코드가 실행됩니다.

(나는 또한 그것은 여기 동작을 변경하지 않습니다. Runnable을 구현하고 단지의 분리의 문제로, 오히려 run를 오버라이드 (override)보다 새로운 Thread 생성자에 Runnable을 전달하는 것이 좋습니다 싶지만, 그것은 청소기 방법 그것에 대해 생각의 IMO.)

관련 문제