Android(安卓)P WindowManager (一) 直观感受每个window的添加
为了更直观的看到window的添加,我在WindowManagerService.java中添加如下log,这样可以看到每次添加窗口的细节
+++ b/base/services/core/java/com/android/server/wm/WindowManagerService.java@@ -1424,7 +1424,13 @@ public class WindowManagerService extends IWindowManager.Stub public int addWindow(Session session, IWindow client, int seq, LayoutParams attrs, int viewVisibility, int displayId, Rect outFrame, Rect outContentInsets, Rect outStableInsets, Rect outOutsets, DisplayCutout.ParcelableWrapper outDisplayCutout, InputChannel outInputChannel) { /********************************/ win.attach(); mWindowMap.put(client.asBinder(), win);-+ android.util.Log.v("lishuo","*** ADD client.asBinder :" + client.asBinder().toString());+ android.util.Log.v("lishuo","*** ADD windowState :" + win.toString());+ for(IBinder key:mWindowMap.keySet())+ {+ android.util.Log.v("lishuo","client.asBinder :" + key.toString());+ android.util.Log.v("lishuo","windowState :" + mWindowMap.get(key).toString());+ } win.initAppOpsState();
一,重启抓取log。
(1)第一次出现时,此时是在安全模式下先添加了设备锁界面。
02-26 01:54:18.575 850 902 V lishuo : *** ADD client.asBinder :android.os.BinderProxy@40803ea02-26 01:54:18.575 850 902 V lishuo : *** ADD windowState :Window{99726db u0 com.android.settings/com.android.settings.CryptKeeper}02-26 01:54:18.575 850 902 V lishuo : client.asBinder :android.os.BinderProxy@40803ea02-26 01:54:18.575 850 902 V lishuo : windowState :Window{99726db u0 com.android.settings/com.android.settings.CryptKeeper}
(2)第2次出现,添加的是分屏界面(SystemUI/src/com/android/systemui/stackdivider/DividerWindowManager.java),此时windowMap已经有设备所界面了。
02-26 01:54:19.294 850 901 V lishuo : *** ADD client.asBinder :android.os.BinderProxy@2f88702-26 01:54:19.294 850 901 V lishuo : *** ADD windowState :Window{18c0352 u0 DockedStackDivider}02-26 01:54:19.294 850 901 V lishuo : client.asBinder :android.os.BinderProxy@40803ea02-26 01:54:19.294 850 901 V lishuo : windowState :Window{99726db u0 com.android.settings/com.android.settings.CryptKeeper}02-26 01:54:19.294 850 901 V lishuo : client.asBinder :android.os.BinderProxy@2f88702-26 01:54:19.294 850 901 V lishuo : windowState :Window{18c0352 u0 DockedStackDivider}
(3)第3次出现,添加的是AssistPreviewPanel界面(SystemUI/src/com/android/systemui/assist/AssistManager.java)。
02-26 01:54:19.592 850 1049 V lishuo : *** ADD client.asBinder :android.os.BinderProxy@65f4e1302-26 01:54:19.593 850 1049 V lishuo : *** ADD windowState :Window{5034f4e u0 AssistPreviewPanel}02-26 01:54:19.593 850 1049 V lishuo : client.asBinder :android.os.BinderProxy@40803ea02-26 01:54:19.593 850 1049 V lishuo : windowState :Window{99726db u0 com.android.settings/com.android.settings.CryptKeeper}02-26 01:54:19.593 850 1049 V lishuo : client.asBinder :android.os.BinderProxy@2f88702-26 01:54:19.593 850 1049 V lishuo : windowState :Window{18c0352 u0 DockedStackDivider}02-26 01:54:19.593 850 1049 V lishuo : client.asBinder :android.os.BinderProxy@65f4e1302-26 01:54:19.593 850 1049 V lishuo : windowState :Window{5034f4e u0 AssistPreviewPanel}
(4)第4次出现,添加的是虚拟按键界面(SystemUI/src/com/android/systemui/statusbar/phone/NavigationBarFragment.java)。
02-26 01:54:20.270 850 1426 V lishuo : *** ADD client.asBinder :android.os.BinderProxy@657466702-26 01:54:20.271 850 1426 V lishuo : *** ADD windowState :Window{ab792b2 u0 NavigationBar}02-26 01:54:20.271 850 1426 V lishuo : client.asBinder :android.os.BinderProxy@657466702-26 01:54:20.271 850 1426 V lishuo : windowState :Window{ab792b2 u0 NavigationBar}02-26 01:54:20.271 850 1426 V lishuo : client.asBinder :android.os.BinderProxy@40803ea02-26 01:54:20.271 850 1426 V lishuo : windowState :Window{99726db u0 com.android.settings/com.android.settings.CryptKeeper}02-26 01:54:20.271 850 1426 V lishuo : client.asBinder :android.os.BinderProxy@2f88702-26 01:54:20.271 850 1426 V lishuo : windowState :Window{18c0352 u0 DockedStackDivider}02-26 01:54:20.271 850 1426 V lishuo : client.asBinder :android.os.BinderProxy@65f4e1302-26 01:54:20.272 850 1426 V lishuo : windowState :Window{5034f4e u0 AssistPreviewPanel}
(5)第5次出现,添加的是状态栏界面(SystemUI/src/com/android/systemui/statusbar/phone/StatusBarWindowManager.java)
02-26 01:54:20.580 850 1426 V lishuo : *** ADD client.asBinder :android.os.BinderProxy@dc1ec2f02-26 01:54:20.581 850 1426 V lishuo : *** ADD windowState :Window{d85a91a u0 StatusBar}02-26 01:54:20.581 850 1426 V lishuo : client.asBinder :android.os.BinderProxy@657466702-26 01:54:20.581 850 1426 V lishuo : windowState :Window{ab792b2 u0 NavigationBar}02-26 01:54:20.581 850 1426 V lishuo : client.asBinder :android.os.BinderProxy@40803ea02-26 01:54:20.581 850 1426 V lishuo : windowState :Window{99726db u0 com.android.settings/com.android.settings.CryptKeeper}02-26 01:54:20.581 850 1426 V lishuo : client.asBinder :android.os.BinderProxy@2f88702-26 01:54:20.581 850 1426 V lishuo : windowState :Window{18c0352 u0 DockedStackDivider}02-26 01:54:20.581 850 1426 V lishuo : client.asBinder :android.os.BinderProxy@65f4e1302-26 01:54:20.581 850 1426 V lishuo : windowState :Window{5034f4e u0 AssistPreviewPanel}02-26 01:54:20.581 850 1426 V lishuo : client.asBinder :android.os.BinderProxy@dc1ec2f02-26 01:54:20.581 850 1426 V lishuo : windowState :Window{d85a91a u0 StatusBar}
(6)第6次出现,添加的是壁纸界面(SystemUI//src/com/android/systemui/ImageWallpaper.java)
02-26 01:54:22.287 850 902 V lishuo : *** ADD client.asBinder :android.os.BinderProxy@97f1abf02-26 01:54:22.287 850 902 V lishuo : *** ADD windowState :Window{3fec58c u0 com.android.systemui.ImageWallpaper}02-26 01:54:22.287 850 902 V lishuo : client.asBinder :android.os.BinderProxy@657466702-26 01:54:22.288 850 902 V lishuo : windowState :Window{ab792b2 u0 NavigationBar}02-26 01:54:22.288 850 902 V lishuo : client.asBinder :android.os.BinderProxy@97f1abf02-26 01:54:22.288 850 902 V lishuo : windowState :Window{3fec58c u0 com.android.systemui.ImageWallpaper}02-26 01:54:22.288 850 902 V lishuo : client.asBinder :android.os.BinderProxy@40803ea02-26 01:54:22.288 850 902 V lishuo : windowState :Window{99726db u0 com.android.settings/com.android.settings.CryptKeeper}02-26 01:54:22.288 850 902 V lishuo : client.asBinder :android.os.BinderProxy@2f88702-26 01:54:22.288 850 902 V lishuo : windowState :Window{18c0352 u0 DockedStackDivider}02-26 01:54:22.288 850 902 V lishuo : client.asBinder :android.os.BinderProxy@65f4e1302-26 01:54:22.288 850 902 V lishuo : windowState :Window{5034f4e u0 AssistPreviewPanel}02-26 01:54:22.288 850 902 V lishuo : client.asBinder :android.os.BinderProxy@dc1ec2f02-26 01:54:22.288 850 902 V lishuo : windowState :Window{d85a91a u0 StatusBar}
(7)第7次出现,添加的依然是添加了一个新的分屏界面,windowManagerService又重新创建了一个windowState。
02-26 01:54:24.171 850 1049 V lishuo : *** ADD client.asBinder :android.os.BinderProxy@3416ef402-26 01:54:24.171 850 1049 V lishuo : *** ADD windowState :Window{ee6ca63 u0 DockedStackDivider}02-26 01:54:24.171 850 1049 V lishuo : client.asBinder :android.os.BinderProxy@657466702-26 01:54:24.171 850 1049 V lishuo : windowState :Window{ab792b2 u0 NavigationBar}02-26 01:54:24.171 850 1049 V lishuo : client.asBinder :android.os.BinderProxy@97f1abf02-26 01:54:24.171 850 1049 V lishuo : windowState :Window{3fec58c u0 com.android.systemui.ImageWallpaper}02-26 01:54:24.171 850 1049 V lishuo : client.asBinder :android.os.BinderProxy@40803ea02-26 01:54:24.172 850 1049 V lishuo : windowState :Window{99726db u0 com.android.settings/com.android.settings.CryptKeeper}02-26 01:54:24.172 850 1049 V lishuo : client.asBinder :android.os.BinderProxy@2f88702-26 01:54:24.172 850 1049 V lishuo : windowState :Window{18c0352 u0 DockedStackDivider}02-26 01:54:24.172 850 1049 V lishuo : client.asBinder :android.os.BinderProxy@3416ef402-26 01:54:24.172 850 1049 V lishuo : windowState :Window{ee6ca63 u0 DockedStackDivider}02-26 01:54:24.172 850 1049 V lishuo : client.asBinder :android.os.BinderProxy@65f4e1302-26 01:54:24.172 850 1049 V lishuo : windowState :Window{5034f4e u0 AssistPreviewPanel}02-26 01:54:24.172 850 1049 V lishuo : client.asBinder :android.os.BinderProxy@dc1ec2f02-26 01:54:24.172 850 1049 V lishuo : windowState :Window{d85a91a u0 StatusBar}
余下的就不再贴了,和之前的添加就很相似。
二,进入应用时窗口的添加,实际操作是在桌面点击设置,观察窗口的添加动作
(1)点击-->进入一级设置界面。
可以看到此处有两次的添加,第一次为“Splash Screen com.android.settings”,第二次就是真正显示的设置界面“com.android.settings/com.android.settings.Settings”
02-26 10:42:06.750 8212 8299 V lishuo : *** ADD client.asBinder :android.view.ViewRootImpl$W@1fbbdea02-26 10:42:06.750 8212 8299 V lishuo : *** ADD windowState :Window{90958db u0 Splash Screen com.android.settings}02-26 10:42:06.751 8212 8299 V lishuo : client.asBinder :android.view.ViewRootImpl$W@1fbbdea02-26 10:42:06.751 8212 8299 V lishuo : windowState :Window{90958db u0 Splash Screen com.android.settings}02-26 10:42:06.751 8212 8299 V lishuo : client.asBinder :android.os.BinderProxy@1550f2702-26 10:42:06.751 8212 8299 V lishuo : windowState :Window{5538272 u0 DockedStackDivider}02-26 10:42:06.751 8212 8299 V lishuo : client.asBinder :android.os.BinderProxy@74309e002-26 10:42:06.751 8212 8299 V lishuo : windowState :Window{70aa33f u0 NavigationBar}02-26 10:42:06.751 8212 8299 V lishuo : client.asBinder :android.os.BinderProxy@7bf294b02-26 10:42:06.751 8212 8299 V lishuo : windowState :Window{d1e6de6 u0 AssistPreviewPanel}02-26 10:42:06.751 8212 8299 V lishuo : client.asBinder :android.view.ViewRootImpl$W@3f982ee02-26 10:42:06.751 8212 8299 V lishuo : windowState :Window{491f61c u0 android}02-26 10:42:06.751 8212 8299 V lishuo : client.asBinder :android.os.BinderProxy@ce2af1b02-26 10:42:06.751 8212 8299 V lishuo : windowState :Window{7c0f8b8 u0 com.android.launcher3/com.android.launcher3.Launcher}02-26 10:42:06.751 8212 8299 V lishuo : client.asBinder :android.os.BinderProxy@e4927f502-26 10:42:06.751 8212 8299 V lishuo : windowState :Window{cb65418 u0 StatusBar}02-26 10:42:06.751 8212 8299 V lishuo : client.asBinder :android.os.BinderProxy@b37ecd02-26 10:42:06.751 8212 8299 V lishuo : windowState :Window{f7c6a93 u0 com.android.systemui.ImageWallpaper}02-26 10:42:07.567 8212 9344 V lishuo : *** ADD client.asBinder :android.os.BinderProxy@f788db402-26 10:42:07.567 8212 9344 V lishuo : *** ADD windowState :Window{eb95ddd u0 com.android.settings/com.android.settings.Settings}02-26 10:42:07.568 8212 9344 V lishuo : client.asBinder :android.view.ViewRootImpl$W@1fbbdea02-26 10:42:07.568 8212 9344 V lishuo : windowState :Window{90958db u0 Splash Screen com.android.settings}02-26 10:42:07.568 8212 9344 V lishuo : client.asBinder :android.os.BinderProxy@1550f2702-26 10:42:07.568 8212 9344 V lishuo : windowState :Window{5538272 u0 DockedStackDivider}02-26 10:42:07.568 8212 9344 V lishuo : client.asBinder :android.os.BinderProxy@74309e002-26 10:42:07.568 8212 9344 V lishuo : windowState :Window{70aa33f u0 NavigationBar}02-26 10:42:07.568 8212 9344 V lishuo : client.asBinder :android.os.BinderProxy@7bf294b02-26 10:42:07.568 8212 9344 V lishuo : windowState :Window{d1e6de6 u0 AssistPreviewPanel}02-26 10:42:07.568 8212 9344 V lishuo : client.asBinder :android.view.ViewRootImpl$W@3f982ee02-26 10:42:07.568 8212 9344 V lishuo : windowState :Window{491f61c u0 android}02-26 10:42:07.568 8212 9344 V lishuo : client.asBinder :android.os.BinderProxy@ce2af1b02-26 10:42:07.568 8212 9344 V lishuo : windowState :Window{7c0f8b8 u0 com.android.launcher3/com.android.launcher3.Launcher}02-26 10:42:07.568 8212 9344 V lishuo : client.asBinder :android.os.BinderProxy@e4927f502-26 10:42:07.568 8212 9344 V lishuo : windowState :Window{cb65418 u0 StatusBar}02-26 10:42:07.568 8212 9344 V lishuo : client.asBinder :android.os.BinderProxy@f788db402-26 10:42:07.568 8212 9344 V lishuo : windowState :Window{eb95ddd u0 com.android.settings/com.android.settings.Settings}02-26 10:42:07.568 8212 9344 V lishuo : client.asBinder :android.os.BinderProxy@b37ecd02-26 10:42:07.568 8212 9344 V lishuo : windowState :Window{f7c6a93 u0 com.android.systemui.ImageWallpaper}
(2)在设置界面点击“电池”,进入电池界面,此时添加的是“com.android.settings/com.android.settings.Settings$PowerUsageSummaryActivity”,而上一个步奏添加的“Splash Screen com.android.settings”已经被移除了,但是“com.android.settings/com.android.settings.Settings”依然存在。
02-26 10:47:32.860 8212 9039 V lishuo : *** ADD client.asBinder :android.os.BinderProxy@5a736402-26 10:47:32.860 8212 9039 V lishuo : *** ADD windowState :Window{903c9cd u0 com.android.settings/com.android.settings.Settings$PowerUsageSummaryActivity}02-26 10:47:32.860 8212 9039 V lishuo : client.asBinder :android.os.BinderProxy@1550f2702-26 10:47:32.860 8212 9039 V lishuo : windowState :Window{5538272 u0 DockedStackDivider}02-26 10:47:32.860 8212 9039 V lishuo : client.asBinder :android.os.BinderProxy@74309e002-26 10:47:32.860 8212 9039 V lishuo : windowState :Window{70aa33f u0 NavigationBar}02-26 10:47:32.860 8212 9039 V lishuo : client.asBinder :android.os.BinderProxy@7bf294b02-26 10:47:32.861 8212 9039 V lishuo : windowState :Window{d1e6de6 u0 AssistPreviewPanel}02-26 10:47:32.861 8212 9039 V lishuo : client.asBinder :android.view.ViewRootImpl$W@3f982ee02-26 10:47:32.861 8212 9039 V lishuo : windowState :Window{491f61c u0 android}02-26 10:47:32.861 8212 9039 V lishuo : client.asBinder :android.os.BinderProxy@ce2af1b02-26 10:47:32.861 8212 9039 V lishuo : windowState :Window{7c0f8b8 u0 com.android.launcher3/com.android.launcher3.Launcher}02-26 10:47:32.861 8212 9039 V lishuo : client.asBinder :android.os.BinderProxy@e4927f502-26 10:47:32.861 8212 9039 V lishuo : windowState :Window{cb65418 u0 StatusBar}02-26 10:47:32.861 8212 9039 V lishuo : client.asBinder :android.os.BinderProxy@f788db402-26 10:47:32.861 8212 9039 V lishuo : windowState :Window{eb95ddd u0 com.android.settings/com.android.settings.Settings}02-26 10:47:32.861 8212 9039 V lishuo : client.asBinder :android.os.BinderProxy@b37ecd02-26 10:47:32.861 8212 9039 V lishuo : windowState :Window{f7c6a93 u0 com.android.systemui.ImageWallpaper}02-26 10:47:32.861 8212 9039 V lishuo : client.asBinder :android.os.BinderProxy@5a736402-26 10:47:32.861 8212 9039 V lishuo : windowState :Window{903c9cd u0 com.android.settings/com.android.settings.Settings$PowerUsageSummaryActivity}
(3)按back返回后界面“com.android.settings/com.android.settings.Settings$PowerUsageSummaryActivity”会被移除的,移除的地方我没有添加log,但是通过遍历windowMap是可以看到的。
三,Dialog和Toast的添加
(1)Dialog,此时添加的是“将屏幕投射到设备上”的dialog
02-26 10:57:15.002 8212 10327 V lishuo : *** ADD client.asBinder :android.os.BinderProxy@c897b2502-26 10:57:15.002 8212 10327 V lishuo : *** ADD windowState :Window{3bddaab u0 将屏幕投射到设备上}02-26 10:57:15.002 8212 10327 V lishuo : client.asBinder :android.os.BinderProxy@74309e002-26 10:57:15.002 8212 10327 V lishuo : windowState :Window{70aa33f u0 NavigationBar}02-26 10:57:15.003 8212 10327 V lishuo : client.asBinder :android.view.ViewRootImpl$W@3f982ee02-26 10:57:15.003 8212 10327 V lishuo : windowState :Window{491f61c u0 android}02-26 10:57:15.003 8212 10327 V lishuo : client.asBinder :android.os.BinderProxy@ce2af1b02-26 10:57:15.003 8212 10327 V lishuo : windowState :Window{7c0f8b8 u0 com.android.launcher3/com.android.launcher3.Launcher}02-26 10:57:15.003 8212 10327 V lishuo : client.asBinder :android.os.BinderProxy@979ac6202-26 10:57:15.003 8212 10327 V lishuo : windowState :Window{7d0129 u0 DockedStackDivider}02-26 10:57:15.003 8212 10327 V lishuo : client.asBinder :android.os.BinderProxy@e4927f502-26 10:57:15.003 8212 10327 V lishuo : windowState :Window{cb65418 u0 StatusBar}02-26 10:57:15.003 8212 10327 V lishuo : client.asBinder :android.os.BinderProxy@c897b2502-26 10:57:15.003 8212 10327 V lishuo : windowState :Window{3bddaab u0 将屏幕投射到设备上}02-26 10:57:15.003 8212 10327 V lishuo : client.asBinder :android.os.BinderProxy@b37ecd02-26 10:57:15.003 8212 10327 V lishuo : windowState :Window{f7c6a93 u0 com.android.systemui.ImageWallpaper}02-26 10:57:15.003 8212 10327 V lishuo : client.asBinder :android.os.BinderProxy@9afa4f102-26 10:57:15.003 8212 10327 V lishuo : windowState :Window{701c244 u0 AssistPreviewPanel}
(2)Toast添加过程。
02-26 10:58:12.730 8212 14579 V lishuo : *** ADD client.asBinder :android.os.BinderProxy@6ee9c0402-26 10:58:12.730 8212 14579 V lishuo : *** ADD windowState :Window{639d5ed u0 Toast}02-26 10:58:12.730 8212 14579 V lishuo : client.asBinder :android.os.BinderProxy@74309e002-26 10:58:12.730 8212 14579 V lishuo : windowState :Window{70aa33f u0 NavigationBar}02-26 10:58:12.730 8212 14579 V lishuo : client.asBinder :android.view.ViewRootImpl$W@3f982ee02-26 10:58:12.730 8212 14579 V lishuo : windowState :Window{491f61c u0 android}02-26 10:58:12.730 8212 14579 V lishuo : client.asBinder :android.os.BinderProxy@ce2af1b02-26 10:58:12.730 8212 14579 V lishuo : windowState :Window{7c0f8b8 u0 com.android.launcher3/com.android.launcher3.Launcher}02-26 10:58:12.730 8212 14579 V lishuo : client.asBinder :android.os.BinderProxy@6ee9c0402-26 10:58:12.730 8212 14579 V lishuo : windowState :Window{639d5ed u0 Toast}02-26 10:58:12.730 8212 14579 V lishuo : client.asBinder :android.os.BinderProxy@979ac6202-26 10:58:12.730 8212 14579 V lishuo : windowState :Window{7d0129 u0 DockedStackDivider}02-26 10:58:12.730 8212 14579 V lishuo : client.asBinder :android.os.BinderProxy@e4927f502-26 10:58:12.730 8212 14579 V lishuo : windowState :Window{cb65418 u0 StatusBar}02-26 10:58:12.731 8212 14579 V lishuo : client.asBinder :android.os.BinderProxy@2ce773302-26 10:58:12.731 8212 14579 V lishuo : windowState :Window{eac7af0 u0 com.android.launcher3/com.android.launcher3.Launcher EXITING}02-26 10:58:12.731 8212 14579 V lishuo : client.asBinder :android.os.BinderProxy@b37ecd02-26 10:58:12.731 8212 14579 V lishuo : windowState :Window{f7c6a93 u0 com.android.systemui.ImageWallpaper}02-26 10:58:12.731 8212 14579 V lishuo : client.asBinder :android.os.BinderProxy@9afa4f102-26 10:58:12.731 8212 14579 V lishuo : windowState :Window{701c244 u0 AssistPreviewPanel}
更多相关文章
- android phone电话拨出上层java流程
- Android
- android 自定义checkbox (转)
- eclipse添加android插件错误处理方法
- Android启动模拟器出现:Failed to allocate memory: 8的解决方法
- android自动化(2)
- [Android]获取其他应用的logcat
- 模拟器无法启动,卡在android字样的界面上
- 安卓模拟器设置网速和延迟