Android底层
一、Android系统架构
Linux内核层
功能:提供核心系统服务,如进程管理、内存管理、网络协议栈、驱动模型等。
特点:增加了特定的驱动程序(如Binder IPC驱动、显示驱动、Wi-Fi驱动等),并对标准Linux内核进行了增强(如Low Memory Killer)。
硬件抽象层(HAL)
功能:为Android系统提供硬件驱动的抽象接口,使Android系统不必关心底层硬件的具体实现。
组件:包含多个库模块,每个模块为特定类型的硬件组件实现一组接口。
系统运行库层
功能:提供系统级的功能支持,包括图形渲染、音视频编解码、SQLite数据库等。
主要库:OpenGL ES、WebKit、SQLite、Libc、Bionic等。
应用框架层
功能:为开发者提供构建应用所需的API和服务,包括活动管理器(Activity Manager)、窗口管理器(Window Manager)、包管理器(Package Manager)等。
组件:Views(视图)、Content Providers(内容提供者)、Resource Manager(资源管理器)等。
应用层
功能:包含所有用户安装的应用,使用Java或Kotlin编写。
特点:直接调用应用框架层的API进行开发。
二、系统启动流程
Boot Loader阶段
功能:初始化硬件和加载引导程序。
步骤:
BootROM:从固化在ROM中的代码开始执行。
BootLoader:加载Android操作系统。
Kernel阶段
功能:启动Linux内核,初始化内核空间。
步骤:
swapper进程(pid=0):初始化进程管理、内存管理等。
kthreadd进程(pid=2):创建内核工作线程。
init.rc解析阶段
功能:解析init.rc脚本,启动各种守护进程。
步骤:
init进程孵化ueventd、logd、healthd等守护进程。
启动Binder服务管家(ServiceManager)、开机动画等。
Zygote阶段
功能:启动Zygote进程,孵化出System Server和后续的App进程。
步骤:
fork SystemServer进程:启动ActivityManager、WindowManager等服务。
fork MediaServer进程:启动AudioFlinger、Camera Service等服务。
Home进程启动阶段
功能:启动Launcher应用,让用户看到桌面并进行交互。
三、跨进程通信(IPC)
Binder机制
功能:提供高效的进程间通信。
原理:基于Client-Server模型,通过Binder驱动实现。
面试题解析:
如何更新UI?为什么子线程不能更新UI?
Handler和Looper的关系。
Binder面试题全解析。
其他IPC方式
AIDL(Android接口定义语言):用于生成可序列化的接口。
Messenger:基于Handler的IPC方式。
Service端回调:通过AIDL实现。
四、Handler消息机制
Looper与Handler的关系
功能:消息循环机制,处理线程间的消息传递。
原理:Looper不断轮询消息队列,Handler负责发送和处理消息。
面试题解析:
Handler的工作机制。
Looper无限循环为何不会导致ANR(应用无响应)。
ThreadLocal原理
功能:提供线程局部存储,避免多线程竞争。
应用场景:在Looper中应用,确保每个线程有独立的Looper对象。
五、Framework核心服务解析
1. AMS(ActivityManagerService)
功能:管理系统中的Activity生命周期。
面试题解析:AMS启动过程及面试题。
2. WMS(WindowManagerService)
功能:管理系统的窗口策略和窗口操作。
面试题解析:WMS绘制原理及角色实例化过程。
3. PKMS(PackageManagerService)
功能:管理应用程序的安装、卸载和权限控制。
面试题解析:PKMS启动过程及权限扫描。
六、图形系统
SurfaceFlinger
功能:合成并显示各个应用的界面。
面试题解析:SurfaceFlinger的启动和VSyns机制。
Surface系统
功能:提供绘图的缓冲区管理和图像合成。
面试题解析:Surface系统的创建流程及软硬件绘制。
七、Input与Display系统
1. InputManagerService
功能:处理输入事件,如键盘、触摸屏事件。
面试题解析:输入事件处理流程。
2. DisplayManagerService
功能:管理系统的显示设备和显示配置。
面试题解析:DMS部分亮灭屏流程及亮度调节。
八、归纳与展望
掌握Android底层技术对于开发者来说至关重要,它不仅能帮助我们更全面地理解应用的行为,还能解决疑难杂症并进行性能优化,随着技术的不断发展,Android底层技术也将更加复杂和多样化,需要我们持续学习和探索,希望通过本文的介绍,能为大家在Framework的学习上提供强有力的帮助和支撑,共同迈向高级Android开发者之路。
以上就是关于“android底层”的问题,朋友们可以点击主页了解更多内容,希望可以够帮助大家!
原创文章,作者:未希,如若转载,请注明出处:https://www.kdun.com/ask/1291156.html
本网站发布或转载的文章及图片均来自网络,其原创性以及文中表达的观点和判断不代表本网站。如有问题,请联系客服处理。
发表回复