目录
Android系统架构
binder和AIDL原理
AIDL通信调用流程
Binder与AIDL之间的区别
bundle原理
bundle原理 ,内部用ArrayMap实现,增删改查基于二分法,适合小数据操作。
Android启动流程
- recovery升级模式:启动recovery分区内核和文件系统
- 正常启动模式:引导内核和启动Android系统
- 启动电源以及系统启动:加载引导程序Bootloader到RAM
- Bootloader :主要启动系统OS
- Linux Kenel :启动内核,设置缓存、被保护存储器、计划列表,加载驱动;查找init文件,启动init进程
- init进程启动 : init进程PID是1,父进程为linux系统内核的0号进程;初始化和启动属性服务,并且启动Zygote进程
- Zygote进程启动 : 创建DVM虚拟机并注册JNI,创建服务端Socket,启动SystemSrver进程
- SystemServer进程启动 : 启动Binder线程池和SystemServiceManager,并启动各种系统服务
- Launcher启动 在SystemServer进程中启动ActivityManagerService服务后启动Launcher,桌面程序启动后显示已安装应用的快捷图标
SystemServer启动过程
Activity启动流程
Window
绘制
三个核心方法:measure, layout,draw
View draw方法分为下面 6 步:
- 绘制背景
- 保存 Canvas 图层为后续淡出做准备(可选)
- 绘制 View 的内容
- 绘制子 View (dispatchDraw)
- 绘制淡出边缘并恢复 Canvas 图层(可选)
- 绘制装饰(比如 foreground 和 scrollbar)
Android事件分发机制
PackageManagerService
PowerManagerService
通知显示流程
Media 相关