WMS 负责创建 Surface 以及对 Surface 的摆放工作,之后将 Surface 提交给SurfaceFlinger 进行合并。在 App 层也创建了一个 Surface 对象,但是那个是空对象,用于 WMS 的填充。
一、Surface的创建
首先 APP 层在 ViewRootImpl 的 relayoutWindow() 方法中发起创建任务。
1、APP层Surface创建
ViewRootImpl
源码位置: /frameworks/base/core/java/android/view/ViewRootImpl.java
final IWindowSession mWindowSession;private int relayoutWindow(WindowManager.LayoutParams params, int viewVisibility, boolean insetsPending) throws RemoteException {……int relayoutResult = mWindowSession.relayout(mWindow, params,(int) (mView.getMeasuredWidth() * appScale + 0.5f),(int) (mView.getMeasuredHeight() * appScale + 0.5f), viewVisibility,i