Android系统架构之Framework
Android系统内容十分庞大,而架构相对简单,由下至上分别是Linux内核、HAL、系统Native库和Android运行时环境、Java框架层以及应用层这5层架构,其中每一层都包含大量的子模块或子系统。Franework——Java API FrameworkSystem Server是由Zygote进程fork的第一个进程,负责启动和管理整个Java Framework,包含Activity
Android系统内容十分庞大,而架构相对简单,由下至上分别是Linux内核、HAL、系统Native库和Android运行时环境、Java框架层以及应用层这5层架构,其中每一层都包含大量的子模块或子系统。
Franework——Java API Framework
System Server是由Zygote进程fork的第一个进程,负责启动和管理整个Java Framework,包含ActivityManager,WindowManager,PackageManager,PowerManager等服务
Media Server是由init进程fork而来,负责启动和管理整个C++ Framework,包含AudioFlinger,Camera Service等服务
Franework层是核心应用使用api的框架,为应用提供各种api,包括各种组件来支持开发,下面主要讲三大系统服务:AMS、WMS、PMS
- AMS
AMS是Android中最核心的服务,主要负责系统中四大组件的启动、切换、调度及应用进程的管理和调度等工作,其职责与操作系统中的进程管理和调度模块相类似
AMS的工作流程,其实就是Activity的启动和调度的过程,所有的启动方式,最终都是通过Binder机制的Client端,调用Server端的AMS的startActivityXXX()系列方法。所以可见,工作流程又包括Client端和Server端两个。
作用
为所有窗口分配Surface。客户端向WMS添加一个窗口的过程,其实就是WMS为其分配一块Suiface的过程,一块块Surface在WMS的管理下有序的排布在屏幕上。Window的本质就是Surface。
管理Surface的显示顺序、尺寸、位置
管理窗口动画
输入系统相关:WMS是派发系统按键和触摸消息的最佳人选,当接收到一个触摸事件,它需要寻找一个最合适的窗口来处理消息,而WMS是窗口的管理者,系统中所有的窗口状态和信息都在其掌握之中,完成这一工作不在话下。
AMS是本书碰到的第一块难啃的骨头[①],涉及的知识点较多。为了帮助读者更好地理解AMS,本章将带领读者按五条不同的线来分析它。
· 第一条线:同其他服务一样,将分析SystemServer中AMS的调用轨迹。
· 第二条线:以am命令启动一个Activity为例,分析应用进程的创建、Activity的启动,以及它们和AMS之间的交互等知识。
· 第三条线和第四条线:分别以Broadcast和Service为例,分析AMS中Broadcast和Service的相关处理流程。
· 第五条线:以一个Crash的应用进程为出发点,分析AMS如何打理该应用进程的身后事。
除了这五条线外,还将统一分析在这五条线中频繁出现的与AMS中应用进程的调度、内存管理等相关的知识。
- WMS
作用
为所有窗口分配Surface。客户端向WMS添加一个窗口的过程,其实就是WMS为其分配一块Suiface的过程,一块块Surface在WMS的管理下有序的排布在屏幕上。Window的本质就是Surface。
管理Surface的显示顺序、尺寸、位置
管理窗口动画
输入系统相关:WMS是派发系统按键和触摸消息的最佳人选,当接收到一个触摸事件,它需要寻找一个最合适的窗口来处理消息,而WMS是窗口的管理者,系统中所有的窗口状态和信息都在其掌握之中,完成这一工作不在话下。
Android系统中的窗口是屏幕上的一块用于绘制各种UI元素并可以响应应用户输入的一个矩形区域。从原理上来讲,窗口的概念是独自占有一个Surface实例的显示区域。例如Dialog、Activity的界面、壁纸、状态栏以及Toast等都是窗口。
分析WMS的两个基础子系统的工作原理:
· 布局系统(Layout System),计算与管理窗口的位置、层次。
· 动画系统(Animation System),根据布局系统计算的窗口位置与层次渲染窗口动画。
根据对Surface的操作类型可以将Android的显示系统分为三个层次:
第一个层次是UI框架层,其工作为在Surface上绘制UI元素以及响应输入事件。
· 第二个层次为WMS,其主要工作在于管理Surface的分配、层级顺序等。
· 第三层为SurfaceFlinger,负责将多个Surface混合并输出。
- PMS
PMS用来管理所有的package信息,包括安装、卸载、更新以及解析AndroidManifest.xml以组织相应的数据结构,这些数据结构将会被PMS、ActivityMangerService等等service和application使用到
相关参考
https://blog.csdn.net/lynchyo/article/details/37744115
https://blog.csdn.net/ShareUs/article/details/53125096
更多推荐
所有评论(0)