2013-03-11 4 views
-1

좋은 하루,다른 스레드의 Android 업데이트 UI

내 UI의 이미지 버튼을 다른 스레드에서 업데이트하고 싶습니다. 아래 코드는 내 메인 스레드 onCreate() 메소드에서 실행되는 코드입니다.

아니요. 내가이 오류를 실행할 때 오류가 발생합니다. LogCat은 내가 다른 스레드에서 UI를 업데이트 할 수 없다고 말합니다.

한 번에 동일한 UI 개체를 업데이트하는 여러 스레드가 발생하지 않도록 soem을 읽은 적이 있습니다. 그러나 어떻게 이것을 달성 할 수 있습니까? 나는 주위에 일이있을 것이라고 확신 하는가?

감사합니다.

+0

이것은 복제본입니다. 그런 질문이 많이 있습니다. 검색을 사용하십시오. – Shade

답변

1

UI 요소는 UI 스레드에서만 업데이트해야합니다. 백그라운드 스레드를 사용하여 비동기 작업을 수행하고 UI 스레드에서 실행되는 onPostExecute에서 UI를 수정하십시오.

4

스레드에서 UI 구성 요소에 직접 액세스 할 수 없습니다. 이 작업을 수행하는 올바른 방법은 핸들러에게

final Handler mHandler = new Handler() { 

    public void handleMessage(Message msg) { 

    } 
}; 

를 생성 및 스레드 내부

Message msg = new Message(); 
//TODO: add stuff to message 
mHandler.sendMessage(msg); 

와 UIThread에게 메시지를 보낼 것입니다.

대신 AsyncTask를 사용하고 pre, post 또는 progressUpdate 메서드 내부에서 업데이트를 수행하십시오.

관련 문제