인사이드 안드로이드 (Inside the Android Framework)
----------[[ Chapter 06 안드로이드 서비스 개요 ]]----------
Android Service
UI없이 주기적으로 특정한 일을 수행하는 백그라운드 프로세스
ex) Alarm service
Android service
1) System service
2) Application service
Binding: service를 원격제어할 수 있게 다른 service에 연결하는것
실행 startService()
제어 bindService()
서비스와 이를 생성한 서비스가 동일한 프로세스인지에 따라 로컬 서비스, 리모트 서비스로 구별
- 로컬 서비스: 자신을 생성한 app안에서만 사용, app이 종료되면 종료
- 리모트 서비스: 별개의 독립적인 프로세스에서 동작, main app이 종료되어도 계속 실행
* 바인더 IPC 통신
서비스와 액티비티 사이에 데이터를 주고받을때 --> 마샬링/언마샬링 과정
AIDL (Android Interface Definition Language)
----------[[ Chapter 07 안드로이드 바인더 IPC ]]----------
바인더는 원래 IPC (Inter Proocess Communication) 도구
안드로이드에선 RPC (Remote Procedure Call)를 지원하는데 주로 이용된다.
바인더 IPC 데이터
1) 핸들: 서비스를 구별하는 번호
2) RPC 데이터: 서비스에서 호출할 함수의 인자
3) RPC 코드: 서비스에서 호출할 함수
4) Binder Protocol: IPC 데이터의 처리방법
IPC --> Binder driver : Binder command protocol (BC_)
Binder driver --> IPC : Binder Return protocol (BR_)
Context Manager (핸들번호 0)
다양한 서비스를 모두 목록화해서 관리하는 컨텍스트 매니져
서비스마다 핸들 번호를 할당. 서비스의 추가/검색 등의 관리 기능 수행
Binder Addressing
IPC 핸들을 가지고 서비스 서버를 찾는 과정
컨텍스트 매니져 (Service manager process)
----------[[ Chapter 08 안드로이드 서비스 프레임워크 ]]----------
시스템 서비스 <-- 서비스 프레임워크를 통해 구현
서비스 프레임워크: 안드로이드 플랫폼에서 동작하는 서비스를 개발하기위한 클래스의 집합
프레임워크의 대표적인 특징
1) 확장을 통해 새로운 기능을 추가할 수 있다.
2) 구현된 프로그램의 제어 흐름이 프로그램 자체에 있는게 아니라 프레임워크에 의해 좌우된다.
안드로이드 서비스 프레임워크
- 서비스 인터페이스
- 서비스 생성 (서비스, 서비스 프록시)
- 바인더 IPC 지원
- 서비스 매니져
서비스 클라이언트
- 서비스 레이어
- RPC 레이어
- IPC 레이어
- (바인더 드라이버)
* 마샬링 (Marshalling)
하나 이상의 프로그램 또는 연속되어 있지 않은 저장 공간으로 부터 데이터를 모은 다음, 데이터들을 메세지 버퍼에 집어넣고, 특정 수신기나 프로그래밍 인터페이스에 맞도록 그 데이터 를 조직화하거나, 미리 정해진 다른 혀식으로 변환하는 과정을 말한다.
클라이언트에서 마샬링된 데이터를 서버에 전달하게 되면, 서버에서는 그 데이터를 언마샬링하여 사용함으로써 원격지(다른 프로세스)간의 데이터 사용이 가능하게 된다.
'Android' 카테고리의 다른 글
인사이드 안드로이드 Chapter3 (1) (0) | 2011.12.08 |
---|---|
인사이드 안드로이드 Chapter3 (0) | 2011.12.08 |
인사이드 안드로이드 Chapter1-2 (0) | 2011.12.08 |
Linaro (0) | 2011.11.28 |
Porting Android to x86 (0) | 2011.11.23 |