1.如何使用系统服务?
2.了解系统服务调用的基本原理
3.了解服务的注册原理
context.getSystemService(name) -> ServiceFetcher<?> fetcher = SYSTEM_SERVICE_FETCHERS.get(name) ->
fetcher.getService(ctx) -> 先从缓存里取,没有的话就创建service,然后再放到缓存里 ->createService(ctxImpl)
这里用到了java的静态代理,注册系统服务用addService(name,service),在SystemServer启动时注册系统服务。
你要添加的系统服务无论是跑在SystemServer里还是单独跑在工作线程的系统服务都需要向ServiceManager注册。单独跑工作线程的服务还要往Init.rc配置文件里添加,还要有自己的main函数。还要为这个服务添加ServiceFetcher等,重新编译系统修改安全配置等
网友评论