前面通过几篇的文章详细的介绍了 Window 窗口的添加过程,这里我们简单看一下,AMS 如何实现 Window 窗口的更新和移除流程。
一、窗口更新
这里我们从 Session 开始分析。
1、Session
源码位置:/frameworks/base/services/core/java/com/android/server/wm/Session.java
final WindowManagerService mService;@Override
public int relayout(IWindow window, WindowManager.LayoutParams attrs,int requestedWidth, int requestedHeight, int viewFlags, int flags, long frameNumber,ClientWindowFrames outFrames, MergedConfiguration mergedConfiguration,SurfaceControl outSurfaceControl, InsetsState outInsetsState,InsetsSourceControl[] outActiveControls, Point outSurfaceSize) {Trace.traceBegin(TRACE_TAG_WINDOW_MANAGER, mRelayoutTag);int res = mService.relayoutWindow(this, window, attrs,requestedWidth, requestedHeight, viewFlags, flags, frameNumber,outFrames, mergedConfig