Android Framework学习之Android系统启动流
2020-11-08 本文已影响0人
一只二凡子
1.Android有哪些主要的系统进程?
2.这些系统进程是怎么启动的?
3.进程启动之后主要做了些什么事?
Zygote是怎么启动的?
init进程fork出zygote进程->启动虚拟机,注册JNI函数->预加载系统资源->启动SystemServer->进入Socket Loop
SystemServer是怎么启动的?
SystemServer进程负责启动系统的关键服务,如AMS,PMS等。启动binder机制和binder线程
startSystemServer()-> handleSystemServerProcess()-> zygoteInit()->{commonInit() / nativeZygoteInit() / applicationInit() }
SystemService类解析:SystemServer().run()
1.为主线程创建一个looper
2.加载共享库(系统服务的native层代码)
3.创建系统上下文
4.分批启动系统服务
5.启动loop循环
怎么发布系统服务 -> publishBinderService(name,service) -> ServiceManager.addService(name,service,allowlsolated) 将系统服务添加到ServiceManager里面
分批启动:AMS,PMS,PKMS等
分阶段启动:阶段一,阶段二,阶段三,等