안드로이드 개발 질문/답변
(글 수 45,052)
안녕하세요^^
안드로이드 공부하는 왕 초보입니다.. 용기내서 문의 드려 봅니다.
AIDL관련 공부를 하고 있는데요.. 통 감이 오지 않아서요
AIDL이 툴을 의미하는게 맞는지요?
AIDL관련 예제가
안드로이드 공부하는 왕 초보입니다.. 용기내서 문의 드려 봅니다.
AIDL관련 공부를 하고 있는데요.. 통 감이 오지 않아서요
AIDL이 툴을 의미하는게 맞는지요?
"내부 프로세스 인터페이스를 위한 코드를 생성해주는 TOOL이다."라는 정의를 봐서요
AIDL관련 예제가
API Demos -> Remote Service Binding, Remote Service Controller등이 있다는데...
이 어플들이 구체적으로 어떤 기능을 하고 bind service누르면 서비스를 받고있다는 메시지만 뜨던데
실제 서비스가 binding되어서 에뮬에서 어떻게 확인할수 있는지 궁금합니다..
답변 기다리고 있겠습니다.^^
이 어플들이 구체적으로 어떤 기능을 하고 bind service누르면 서비스를 받고있다는 메시지만 뜨던데
실제 서비스가 binding되어서 에뮬에서 어떻게 확인할수 있는지 궁금합니다..
답변 기다리고 있겠습니다.^^
2009.04.11 06:16:36
프레임워크 내에도 다양한 서비스가 동작하고 있습니다. 프레임워크 구조상에서 Manager로 되어있는 것들은 대부분 별도의 프로세스에서 동작하고 있습니다. 예를 들어 Location Manager Service를 이용하려면 먼저 getSystemService를 호출해서 연결을 시킵니다. LocatoinManager는 별도의 서비스에서 동작하고 있고 필요할때 Binder를 통해 명령을 받아 실행을 하고 결과를 대돌려줍니다.
문서는 잘 모르겠습니다.
문서는 잘 모르겠습니다.
2009.04.13 18:39:10
(추천:
1 / 0)
비밀글 해제해주세요. 개인적인 질문에 대한 답을 드리는 것이 아니라 다른 개발자분들과 정보를 공유하기 위해서 답을 드리는 것입니다. 저 말고 다른 분들도 의견을 주실수도 있구요.
2009.04.14 15:35:45
AIDL파일로 Java 파일이 자동 생성되는 것이구요. 개발환경에 따라 차이는 있지만 당연히 Java 가 컴파일 되기 전에 생성됩니다. ApiDemos 프로젝트에 보시면 aidl파일과 그에 해당하는 Java 파일이 생성되어 있는 것을 보실수 있습니다.
말씀하신 폰북 정보와 같은 것은 Content Provider를 통해서 제공됩니다. 그리고 기본으로 제공하는 기능들은 SDK의 함수 콜을 통해서 간단히 사용할 수 있구요.물론 그 내부에서는 Binder와 IPC를 사용하고 있는 것이지요.
IPC는 프로세스 간에 커뮤니케이션을 총칭하는 것이지요. 당연히 Binder에서도 내부적으로 Shared Memomry를 이용하구요. AIDL은 IPC를 더 추상화해서 로컬에 있는 클래스와 오브젝트를 사용하는 것과 똑같은 방식으로 원격 객체를 접근시켜주는 매게체 역할을 한다고 생각하시면 됩니다.
말씀하신 폰북 정보와 같은 것은 Content Provider를 통해서 제공됩니다. 그리고 기본으로 제공하는 기능들은 SDK의 함수 콜을 통해서 간단히 사용할 수 있구요.물론 그 내부에서는 Binder와 IPC를 사용하고 있는 것이지요.
IPC는 프로세스 간에 커뮤니케이션을 총칭하는 것이지요. 당연히 Binder에서도 내부적으로 Shared Memomry를 이용하구요. AIDL은 IPC를 더 추상화해서 로컬에 있는 클래스와 오브젝트를 사용하는 것과 똑같은 방식으로 원격 객체를 접근시켜주는 매게체 역할을 한다고 생각하시면 됩니다.
AIDL은 Android Interface description language의 약자입니다. 말그대로 인터페이스를 정의하는 언어입니다. AIDL파일을 열어보면 Java에서와 비슷하게 Method를 정의하는 코드를 볼 수 있습니다. Corba의 IDL과 같은 것을 Android에서 사용한다고 생각하면 됩니다. AIDL Tool은 AIDL파일에 적합한 Java Code를 자동으로 생성시켜주는 툴입니다. (Corba는 Java의 RMI와 비슷한 역할을 하는 표준이라고 생각하시면 됩니다.)
IDL은 보통 RPC(Remote Procedure Call)에서 많이 사용됩니다. 서로 다른 프로세스 혹은 네트워크간에 함수를 호출하기 위해서는 인터페이스가 바뀔때마다 언어와 구조에 맞는 코드를 생성해주어야 하는데. 실제 코드를 생성하는 부분은 툴에 맞기고 프로그래머는 IDL만 정의하도록 구성됩니다.
AIDL은 Android에서 사용되는 IPC (Inter process communication), 안드로이드 구조를 이야기할때 Binder라고 일컬어지는 부분을 사용하기 위해서 정의합니다. Remote Service 라는 것은 같은 프로세스가 아니라 다른 프로세스에서 오는 함수 호출을 처리하는 Service이고 그것을 연결해주는데 Binder가 사용되고 있습니다. 그 Binder를 사용하는 코드를 자동으로 생성시켜주는 것이 AIDL이지요.
Binder가 Android 프레임워크의 근간이되는 중요한 역할을 하고 있습니다만 머 실제 어플리케이션에서 그 존재를 알아야할일은 많이 없습니다.
APIDemos 예제에서 메시지가 뜨는 과정이 중요한 것이지 그 메시지가 보여지는 것이 중요한 것은 아닙니다. RemoteService는 다른 어플리케이션 혹은 다른 프로세스에서 호출될 수 있는 서비스를 생성할때 사용한다고 이해하시면 됩니다.