인사이드 안드로이드 (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
블로그 이미지

민둥

,