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等

分阶段启动:阶段一,阶段二,阶段三,等

上一篇下一篇

猜你喜欢

热点阅读