系统服务:
java写的java层系统服务:Android Service
C++写的系统服务:Native Service 本地系统服务
系统服务往上是framework,其中衔接的接口就是JNI,往下衔接到驱动,就是HAL(硬件抽象层)
系统服务是Android框架里面最接近Linux/Driver的部分。
系统服务让App来发挥Driver/HW Device功能的重要管道。
启动系统服务:
开机时,首先加载Linux Kernel部分,进行Kernel-Space的初始化,然后加载硬件驱动程序,
就启动了Linux系统。
随后切换至User-Space, 创建init进程,读取init.rc文档,依据其内容的指示而先启动NativeService
再启动Android Service。就完成系统服务的启动。
系统服务启动在先,App启动在后。
ServiceManager: 天字第一号系统服务
登录服务
1. new service
2. ServiceManaer.addservice(service)
AMS(ActivityManagerService)(用来管理app)启动一个App的时候,就会通过Socket请求Zygote来fork一个进程给这个各即将启动的App。
fork:赋值,繁殖。
App的可以由java和C++来写,java的代码由虚拟机来执行,C的代码有CPU来执行。
App进程与系统进程之间的通信,跨进程通信(IPC),服务端提供IBinder接口。
绑定service,需要ServiceManager的协助:
Ibinder b = ServiceManager.getService(Context.AUDIO_SERVICE):
Stub 曹操类,挟天子以令诸侯。
屏蔽了Binder的接口,写了新的接口,比如 IAudioService.Stub写了ajustAudio,getMode等更贴心的接口
屏蔽掉了onTansact()等。
http://edu.csdn.net/course/detail/1480