본문 바로가기

안드로이드 개발

안드로이드 Thread 에서 UI 쓰레드 이외의 쓰레드에서 UI를 변경하는 방법

안드로이드를 개발하면서, 당연스럽게도 Thread를 사용하여 패킷을 일정간격으로 체크해서
패킷이 들어왔을때 동작하도록 프로그램을 짰다.

당연히 잘 될줄 알았는데... 에러를 뿜으면서 전혀 되지를 않는것이었다..

무엇때문인지 보았더니 Thread 내부에서 변경된 내용을 UI에 보여주는 부분에서
계속 프로그램이 죽어버렸다.

인터넷 서핑을 통해서 왜 그런지 알게 되었는데

"안드로이드 에서는 UI Thread 이외의 Thread 에서 UI를 바꿀수 없다" 라는게 문제같았다...

결국 찾은 방법은 unOnUiThread 를 사용하는 방법이었는데.. 해당 내용을 Thread 내부에 넣고
UI 변경하는 부분을 해당 구문 안에서 실행하게 했더니 에러가 없이 잘 돌아가게 되었다.


runOnUiThread(new Runnable(){ // 안드로이드에서 Ui 쓰레드에서만 UI를 바꿀 수 있음.
@Override
public synchronized void run(){
// 실제 UI 뿌리는 과정
}
});


아직도 갈길이 멀기만한 안드로이드 ~!