메세지는 쓰레드(Thread) 와 핸들러(Handler) 를 이용해서 사용한다는 내용은 많이 있는데 정작 어떤경우 사용해야 좋은지 초보자인 경우 잘 모르는 상황이 많음. 그런걸 간단하게 공유해보고자 함
메세지(Message) 특징 메세지도 Thread 특징을 그대로 이어받아 사용하기 때문에 코드가 동작 중 로딩으로 인해 버벅거리는 경우는 없음 UI 변경도 간섭을 할 수 있음 ( Thread 내부에서 UI 변경을 하려고 하면 [ Only the original thread that created a view hierarchy can touch its views ] 라는 내용의 에러 발생 확인 가능함 ) 물론 Activity.runOnUiThread( new Runnable() { ... } ) 함수를 이용할 수도 있지만 이런 방식도 가능하다는 것을 알았으면 함
반응형
메세지(Message) 송신 및 수신 기본적인 구조는 다음과 같음
. 데이터가 공백이거나 Null 인 경우(code_0 는 int 형으로 알맞은 숫자를 선언해주면 가능)
송신부 A
mhandler.sendEmptyMessage(code_0);
수신부 A
Handler mhandler = new Handler(){
@Override
public void handleMessage(@NonNull Message msg) {
super.handleMessage(msg);
switch(msg.whar){
case code_0 :
break;
}
}
}
. 데이터( 정수 0) 존재하며 키값( 문자열 : DATA0 ) 지정하여 보내는 경우 데이터는 정수, 실수, Byte, Char, String 배열 등등 다양한 변수를 담을 수 있음 또한 데이터 개수가 증가할 때는 bundle 에 형식과 키값, 데이터를 실어주면 전달이 가능함