Android > Thread Message 전달 방법
등록일 : 2017-07-06 17:22
조회수 : 93,687
애플리케이션을 위해 프로게스가 만들어 지면 메인스레드는 최상위에서 관리되는 애플리케이션 객체인 애티비티,
브로드캐스트 수신자 등과 새로만들어지는 위도우를 관리하기 위한 메시지 큐를 실행하게 됩니다.
이 메시지 큐를 이용해 순차적으로 코드를 수행할 수 있으며 이 메시지 큐를 이용해 메인 스레드에서 처리할 메시지를 전달하는
역할을 담당하는 것이 핸들러 클래스 입니다.
Thead 와 핸들러수행순서
1. 핸들러가 관리하는 메시지 큐에서 처리할 수 있는 메시지 객체 하나를 참조한다.
2. obtainMessage() 를 이용해 호출의결과로 메시지 객체를 리턴받는다.
3. 메세지 객체에 정보를 넣는다.
4. sendMessage() 메소드를 이용해 메시지 큐에 넣는다.
5. handleMessage() 메소드에 정의된 기능이 수행된다.
위의 과정을 구체적인 코드로 살펴보자.
public class test extends Activity {
public void onCreate(Bundle savedInstanceState) {
ProgressHandler handler;
handler = new ProgressHandler();
Thread thread1 = new Thread(new Runnable() {
public void run()
{
Message msg = handler.obtainMessage(); //호출의결과로 메시지 객체를 리턴받는다.
msg.what = 1;
msg.id = "abc";
handler.sendMessage(msg); //msg 를 ProgressHandler 클래스의 handleMessage로 전송한다.
}
});
thread1.start();
}
public class ProgressHandler extends Handler {
public void handleMessage(Message msg) {
//받은 메시지를 처리한다.
Int str1= (String)msg.what;
String str2 = (String)msg.id;
Log.e("SampleJavaThread","Exception in thread.",str2);
}
}
}
수행순서와 아래 소스를 보고 분석해 보기 바란다.