
115
5
장
-
프로세스 간 통신
두 스레드(원격 및 현재 스레드)의 이름 모두
Binder
_
1
이라고 출력되지만, 두 스레드는 각각
클라이언트와 서버 프로세스의 다른 바인더 스레드에 속해 있음을 주목하라. 비동기 콜백은 바
인더 스레드에서 수신된다. 따라서 콜백 구현이 클라이언트 프로세스의 다른 스레드와 데이터를
공유한다면, 콜백 구현 시 스레드 안전을 보장해야 한다.
5.3
바인더를 이용한 메시지 전달
4
.
4
절 ‘안드로이드 메시지 전달’에서 살펴본 것처럼 안드로이드 플랫폼은 메시지 전달을 통해
유연한 스레드 간 통신을 제공한다. 그러나 스레드 간 통신은
Message
객체가 스레드의 공유 메
모리 안에 위치하기 때문에 해당 스레드들이 같은 프로세스 안에서 실행될 필요가 있다. 스레드
가 다른 프로세스에서 실행되는 경우 스레드는 메시지 공유에 쓰일 어떠한 공용 메모리도 갖지
않는다. 대신 메시지는 바인더 프레임워크를 이용하여 프로세스 경계를 넘어 전달되어야 한다.
이러한 경우 오로지 원격 프로세스 전용으로 쓰이는 핸들러로 메시지를 보내기 위해
android
.
os
.
Messenger
를 사용할 수 있다. 메신저는 클라이언트 프로세스로 메신저의 참조를 전달하거
나
Message
객체를 보내기 위해 바인더 프레임워크를 이용한다. 핸들러는 프로세스를 넘어 전
달될 수