본문 바로가기

ios aos 개발/Android

Android Handler 사용법 (Message 전송)handlerMessage,post

반응형
Android Handler 사용법에 대해 알아 봅시다.
핸들러의 메세지 전송 사용법에 대해 알아보도록 하겠습니다.
적당한 예제가 소켓 통신 -> 쉽게 말해서 채팅 하는거를 적용해서 설명 하겠습니다.

제가 Handler를 쓴 이유는 스레드를 사용하기 때문입니다.
즉 메인스레드(송신)에 있는 변수 값을 다른 스레드(수신)에서 값을 변경 시켜주기 위해 사용하였습니다.


1)handleMessage함수

그림1

핸들러 구현 함수


public void handleMessage(Message msg)
{
//write your method
}

위 함수는 밑에 사진의 sendMessage 함수에 의해 전달되는 msg를 받아서 처리하는 하는것입니다.
그림1

sendMessage를 이용한 메세지 전송


즉 sendMessage(msg)에서 보낸 msg를    handleMessage(Message msg)의 msg 로 받아 public void handleMessage(Message msg) 함수에서 처리 하는 것입니다.

참고* Message msg  에는 밑에 5개의 변수가 있습니다. 메세지를 전송할때 처리해야 되는 값을 arg1,arg2,obj에 넣어서 sendMessage(msg)함수를 이용해 보내는 것입니다.

저는 receiverstr (String형)를 변수 내용을 Object 인객체 변수인 obj에 넣었습니다.
arg1,arg2는 int형만 쓸 수 있기 때문에 ,다른 자료형은 obj에 넣어 주는것 입니다. 
그림3

Message의 매개변수



2)post함수


post함수는 간단히 핸들러에서 처리 해야 될때 사용 할 수 있습니다.
이것은 new Runnable()의 run()을 이용하여 사용 됩니다.
그러면 구지 sendMessage()함수를 쓰지않아도 run()함수 내에서 처리 할 수 있습니다.

그림에 적혀 있는 mHandlertv.setText 는 매인 에서 스레드 생성시 넘겨주는 변수 입니다.


매개변수를 넘겨주는 부분만 먼저 보여드리겠습니다.
메인 에서 스레드 생성 및 시작할 때 넘겨주는 부분 입니다.
밑에 그림에 나와있는 mhandler메인 클래스 에서 생성된 변수 입니다. 즉
첫 번째 그림에 나와있는 변수 mhandler입니다.


밑에 그림은 수신하는 클래스 에서 선언된 부분 입니다.
메인클래스의 mhandler을 this.mhandler = handler 에서 넣어 줍니다.