之前都是浏览别人的博客,从今天开始,每周坚持写一篇技术博客,我当前主要从事android 上层开发,工作之余自己也会对中间层及底层的代码进行研究,关注过老罗,罗升阳的博客,他用了两年时间分析android源码,坚持写博客,很是感谢它的分享。
Android的两大支柱:SystemServer和Zygote
两个支柱任何一个倒下,都会导致Android Java的Crash,SystemServer是由Zygote孵化的,Linux系统中的进程init会才重新启动二者。Android几乎所有的核心服务都在SystemServer进程中,如AMS(ActivityManagerService),PMS(PowerManagerService),WMS(WindowManagerService)等。
SystemServer
systemserver由zygote生成的一个进程,进程名为:system_server,
system_server进程在ddms中的进程名为:system_proces
main首先加载动态库,libandroid_server.so,而后调用native的init1,从java到Native层,又通过jni从Native层调到java层去调用init2函数。
ServerThread,android的大多service类,都在此处
第一类核心服务
ActivityManagerService,Power