본문 바로가기
Android

인사이드 안드로이드 08 안드로이드 서비스 프레임워크 (2)

by OKOK 2021. 5. 18.

8.3 동작 메커니즘

내장도니 시스템 서비스 수준으로 개발하려면 서비스 프레임워크를 구성하는 클래스에 관해 잘 이해하고 있어야 함. IAudioFlinger 서비스 인터페이스를 기준으로 왼쪽은 서비스를 구현하는 데 필요한 구성요소가 배치돼 있고, 오른쪽에는 서비스 프록시를 구현하는 데 필요한 구성요소가 배치돼 있음.

 

서비스 인터페이스에는 서비스와 서비스 프록시에서 동일하게 사용하는 서비스 함수가 선언돼 있음. BnAudioFlinger의 부모 클래인 BnInterface 클래스는 클래스 템플릿으로 선언돼 있으며 인자로 받은 IAudioFlinger를 상속할뿐만 아니라 BBinder 클래스도 상속받음. 시스템 서비스는 서비스 사용자가 이용할 수 있게 안드로이드 플랫폼에 자신을 등록해야 함. 서비스 매니저를 통해 시스템에 서비스를 등록하는 과정은 네이티브 서비스 매니저에 설명함. 

 

8.3.3 서비스 프록시

서비스 프록시 클래스는 바인더 RPC에 필요한 RPC코드와 데이터를 전달하는 서비스 프록시 함수가 구현된 곳. setMasterVolume() 함수를 호출했을 때 생성되는 RPC 코드와 데이터가 IBinder의 transact() 함수로 전달되는 과정을 나타냄. 

 

8.3.4 바인더 IPC 처리

processState 클래스가 맡고 있는 기능은 클래스가 생성되면 바인더 아피씨에 사용되는 바인더 드라이버를 연다. IPCTreadState 클래스는 바인더 드라이버와 상호작용을 통해 바인더 IPC를 수행하는 동안에 바인더 IPC 데이터를 송수신하는 역할을 함.

댓글