Android FrameWork (三)
SystemServer
回顾知识:
熟悉源码:
Zygotę: 应用孵化器
system_server : 系统服务的入口
开启服务:开启安装服务、开启设备标识符访问服务 、开启电池服务 、开启核心服务、开启其他服务
创建了ActivityTaskManagerService
ActivityManagerService. AMS 并且关联我们
开启looper
拓展知识:
LoadApk:理解为apk文件加载到内存的一个java对象 framework-res.apk
- context 对于Android context 大家是怎么理解的?
LocalServices.java: addServece方法
- ArrayMap k,v k是int类型的包装,k是从小到大依次排列。时间复杂度可以是存的是 O(1). 取的过程就是log(n map.size). put和 get
- HashMap <k(Object),v > 时间复杂度 put和 get O(1). K是一个复合类型,计算hash值 假如现在的k是String类型,那么就需要遍历当前字符串 计算当前“jijs”字符串的hash值存储到对应的位置上去 对应时间复杂度O(k) k复杂增长
- ArrayList ?
- WatchDog 看门狗机制?
原理:是一个单例模式,有一个handlerChecker集合,根据handler进行监控,监控所有的service 假如长时间未响应,AMS handler sendMessage(MQ)时间戳
总结:
ZygoteInit.java中
1,首先会调用我们的forkSystemServer 调用Native函数来fork SystemServer进程
Zygote.java中
2,forkSystemServer 注意传递的class
com_android_internal_os_zygote.cpp中
3,
4,forkCommon
SystemServer 中