Android 中的 Service 大概有如下三种(据我所知):
² Android Application Service : 在 Android AP 开发中常常用到的一种概念。 从最直白的视角来看,就是剥离了界面的 Activity ,它们在很多 Android 的概念方面比较接近,都是封装有一个完整的功能逻辑实现,只不过 Service 不抛头露脸,只是默默无声的做坚实的后盾。 概括说,这一组件是利用 Framework 中的 AIDL ,采用拿来主义实现 RPC 其更详尽的原理请参看 《 深入 Android 【三】 - 组件入门 》 。
² Native Service : 在 Native Framework 这一层中提供支持的一种服务。系统启动阶段解析 Init.rc 过程中启动 Native Service (包括各种用户空间的 Daemon ),即在 Init 第一阶段启动。
² Android Service : 在 Java Framework 这一层为系统提供支持的一种服务,又称 Java Service 。由 SystemServer 启动。即在 Init 第二阶段启动。
本节中关注是 Native service 和 Android Service 。下面介绍他们的启动过程
在 system/core/init 中 init.c 读取 init.rc 等系列配置文件:
启动 Native Service :
启动 Zygote , Zygote 启动 sytemserver 建立 Android service :
SystemServer 启动 Android Service :