主要涉及到 应用程序进程 和ActivityManagerService、WindowManagerService、SurfaceFlingerService 三大服务。
其中 应用程序进程 中的对象有Activity、Window、View、Surface。(其实还有非常多)
Window对应于WindowManagerService中的WindowState对象,用于给WindowManagerService管理窗口。
Surface对应于SurfaceFlingerService中的Layer对象,用于给SurfaceFlingerService管理绘图表面。
执行顺序如下
在Activity的attach()中,创建Window/PhoneWindow对象
在Activity的onCreate()中,设置Window对象中的View对象
在ActivityThread的handleResumeActivity()中,调用wm.addView()请求WindowManagerService创建WindowState对象
在第一次performTraversal()中,调用relayoutWindow()请求WindowManagerService创建Surface对象,WindowManagerService再请求SurfaceFlingerSurface创建Surface对象,并依次返回给WindowManagerService、应用程序。
在第二次performTraversal()中,调用draw(),在其中调用surface.lockCanvas()获取一个图形缓冲区并封装成Canvas对象,调用mView.draw()绘制View,调用surface.unlockCanvasAndPost()请求SurfaceFlingerService渲染图形缓冲区。