본문 바로가기

Android

only the original thread that created a view hierarchy can touch its views

1. Timer를 설정하고 그 안에서 UI를 변경하려고 했더만....

only the original thread that created a view hierarchy can touch its views

   라는 Exception이 발생한다... 구글링 해보니...

My god, you must change your UI in main thread  but not your new thread , it is  android's rule . 

   라고 한단다... 쩝... 안하던 Thread 까지 해야 겠네... 머... 하라면 해야쥐....


2. 핸들러를 만들고 그 안에서 UI를 변경시키는 함수를 호출했다. 호출된 쓰레드에선 단지 메시지 전달만 한다.

        // 핸들러 만들기

        final Handler handler = new Handler()  {

        public void handleMessage(Message msg)  {

        getXML(btn); // 여기에서 메인 UI를 변화 시킨다.

        }

        };

        // 타이머 사용

        myTask = new TimerTask()  {

        public void run()  {

        Log.d("myTask","run()");

        Message msg = handler.obtainMessage();

        handler.sendMessage(msg);

        //getXML(btn); // 쓰레드 내에서 메인 UI를 변화시킬 수 없음. 그러므로 핸들러를 이용해야 함

        }

        };

        timer = new Timer();

        timer.schedule(myTask, 5000,5000);