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