[GP] Android AIDL 을 사용한 Activity 와 Service 통신

이 글은 저의 Github Page의 내용 중 일부를 담아온 것입니다.



안녕하세요. 처음으로 Android 포스트를 쓰게 되었네요. 안드로이드 포스트를 커리큘럼별로 포스팅을 해볼까 라는 생각도 했었지만, 커리큘럼에 대한 내용은 다른 블로그에서도 많이 찾아볼 수 있는 내용이고 또 어렵지 않은 내용이기에 커리큘럼이기 보다는 자주 사용하면서도 쉽게 이해하기 어려운 부분을 정리해보고자 처음 포스트를 AIDL로 삼게 되었습니다.



AIDL ?


AIDL은 Android Interface Definition Language의 약자로, 인터페이스를 정의한 언어입니다. 본래는 Android IDL은 Corba의 IDL 기능을 그대로 묘사한 것이며 RPC 통신할 때 많이 사용합니다. 우리가 이 포스트에서 다룰 주제도, Activity와 Service 간의 통신으로 프로세스 간의 통신을 구현하기 위한 목적으로 사용합니다.


서로 다른 프로세스, 혹은 네트워크 간의 함수를 호출하기 위해서는 인터페이스가 바뀔 때마다 언어와 구조에 맞는 코드를 생성해주어야 하는데, 실제 코드를 생성하는 부분은 AIDL Tool에 맡기고, 개발자는 IDL만 정의하도록 합니다.


그런데, Android 에서는 RPC가 아닌 IPC (Inter Process Communication, 프로세스 간 통신), 안드로이드에서는 보통 Binder라고 불리우는 부분을 사용하기 위해서 정의합니다. 보통 안드로이드에는 두 가지 서비스가 존재하는데, 그 중 Remote Service는 같은 프로세스가 아니라 다른 프로세스에서 오는 함수의 호출을 처리하는 서비스이고, 그를 연결해주는 것이 Binder죠. 그리고, 그 Binder를 사용하는 코드를 자동으로 생성해주는 것이 AIDL 입니다.



이어서 읽으시려면 아래의 버튼을 클릭해주세요.


... 계속 읽기


comments powered by Disqus

Tistory Comments 0