hi,粉丝朋友大家好!
上几集已经给大家讲解了如何构建出0-36层的层级树及相关源码分析,这节来分析离我们最近的Task/ActivityRecord/WindowToken/WindowState/等是怎么添加到这个层级树里面去的。
更多内容qqun:422901085 https://ke.qq.com/course/5992266#term_id=106217431
先来看看最后对应的结构树图:
标记有颜色的就是我们今天要重点源码分析的,主要分为2个部分:
1、Task的加入部分
2、普通的WindowToken加入
因为相对来说ActivityRecord部分比其他WindowToken的多了一个Task
堆栈代码加入:
在WindowContainer加入堆栈打印来追踪:
Line 44013: 02-23 14:36:19.116 565 565 I test2 : DefaultTaskDisplayArea@243571827 addChild child = Task{a13d730 #1 type=home ?? U=0 visible=false visibleRequested=false mode=undefined translucent=true sz=0}
Line 44014: 02-23 14:36:19.116 565 565 I test2 : java.lang.Exception
Line 44015: 02-23 14:36:19.116 565 565 I test2 : at com.android.server.wm.WindowContainer.addChild(WindowContainer.java:727)
Line 44016: 02-23 14:36:19.116 565 565 I test2 : at com.android.server.wm.TaskDisplayArea.addChildTask(TaskDisplayArea.java:334)
Line 44017: 02-23 14:36:19.116 565 565 I test2 : at com.android.server.wm.TaskDisplayArea.addChild(TaskDisplayArea.java:320)
Line 44018: 02-23 14:36:19.116 565 565 I test2 : at com.android.server.wm.Task$Builder.build(Task.java:6551)
Line 44019: 02-23 14:36:19.116 565 565 I test2 : at com.android.server.wm.TaskDisplayArea.createRootTask(TaskDisplayArea.java:1066)
Line 44020: 02-23 14:36:19.116 565 565 I test2 : at com.android.server.wm.TaskDisplayArea.createRootTask(TaskDisplayArea.java:1040)
Line 44021: 02-23 14:36:19.116 565 565 I test2 : at com.android.server.wm.TaskDisplayArea.getOrCreateRootHomeTask(TaskDisplayArea.java:1640)
Line 44022: 02-23 14:36:19.116 565 565 I test2 : at com.android.server.wm.RootWindowContainer.setWindowManager(RootWindowContainer.java:1321)
Line 44023: 02-23 14:36:19.116 565 565 I test2 : at com.android.server.wm.ActivityTaskManagerService.setWindowManager(ActivityTaskManagerService.java:1006)
Line 44024: 02-23 14:36:19.116 565 565 I test2 : at com.android.server.am.ActivityManagerService.setWindowManager(ActivityManagerService.java:1923)
Line 44025: 02-23 14:36:19.116 565 565 I test2 : at com.android.server.SystemServer.startOtherServices(SystemServer.java:1595)
Line 44026: 02-23 14:36:19.116 565 565 I test2 : at com.android.server.SystemServer.run(SystemServer.java:939)
Line 44027: 02-23 14:36:19.116 565 565 I test2 : at com.android.server.SystemServer.main(SystemServer.java:649)
Line 44028: 02-23 14:36:19.116 565 565 I test2 : at java.lang.reflect.Method.invoke(Native Method)
Line 44029: 02-23 14:36:19.116 565 565 I test2 : at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:548)
Line 44030: 02-23 14:36:19.116 565 565 I test2 : at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:914)
Line 121322: 02-23 14:36:22.676 565 565 I test2 : Task{a13d730 #1 type=home ?? U=0 visible=true visibleRequested=false mode=fullscreen translucent=true sz=0} addChild Comparator child = Task{63f31d4 #2 type=undefined A=1000:com.android.settings.FallbackHome U=0 visible=false visibleRequested=false mode=undefined translucent=true sz=0}
Line 121323: 02-23 14:36:22.676 565 565 I test2 : java.lang.Exception
Line 121324: 02-23 14:36:22.676 565 565 I test2 : at com.android.server.wm.WindowContainer.addChild(WindowContainer.java:694)
Line 121325: 02-23 14:36:22.676 565 565 I test2 : at com.android.server.wm.Task.addChild(Task.java:5935)
Line 121326: 02-23 14:36:22.676 565 565 I test2 : at com.android.server.wm.Task.-$$Nest$maddChild(Unknown Source:0)
Line 121327: 02-23 14:36:22.676 565 565 I test2 : at com.android.server.wm.Task$Builder.build(Task.java:6548)
Line 121328: 02-23 14:36:22.676 565 565 I test2 : at com.android.server.wm.Task.reuseOrCreateTask(Task.java:5819)
Line 121329: 02-23 14:36:22.676 565 565 I test2 : at com.android.server.wm.ActivityStarter.setNewTask(ActivityStarter.java:2872)
Line 121330: 02-23 14:36:22.676 565 565 I test2 : at com.android.server.wm.ActivityStarter.startActivityInner(ActivityStarter.java:1864)
Line 121331: 02-23 14:36:22.676 565 565 I test2 : at com.android.server.wm.ActivityStarter.startActivityUnchecked(ActivityStarter.java:1661)
Line 121332: 02-23 14:36:22.676 565 565 I test2 : at com.android.server.wm.ActivityStarter.executeRequest(ActivityStarter.java:1216)
Line 121333: 02-23 14:36:22.676 565 565 I test2 : at com.android.server.wm.ActivityStarter.execute(ActivityStarter.java:702)
Line 121334: 02-23 14:36:22.676 565 565 I test2 : at com.android.server.wm.ActivityStartController.startHomeActivity(ActivityStartController.java:179)
Line 121335: 02-23 14:36:22.676 565 565 I test2 : at com.android.server.wm.RootWindowContainer.startHomeOnTaskDisplayArea(RootWindowContainer.java:1493)
Line 121336: 02-23 14:36:22.676 565 565 I test2 : at com.android.server.wm.RootWindowContainer.lambda$startHomeOnDisplay$12$com-android-server-wm-RootWindowContainer(RootWindowContainer.java:1434)
Line 121337: 02-23 14:36:22.676 565 565 I test2 : at com.android.server.wm.RootWindowContainer$$ExternalSyntheticLambda7.apply(Unknown Source:16)
Line 121338: 02-23 14:36:22.676 565 565 I test2 : at com.android.server.wm.TaskDisplayArea.reduceOnAllTaskDisplayAreas(TaskDisplayArea.java:513)
Line 121339: 02-23 14:36:22.676 565 565 I test2 : at com.android.server.wm.DisplayArea.reduceOnAllTaskDisplayAreas(DisplayArea.java:404)
Line 121340: 02-23 14:36:22.676 565 565 I test2 : at com.android.server.wm.DisplayArea.reduceOnAllTaskDisplayAreas(DisplayArea.java:404)
Line 121341: 02-23 14:36:22.676 565 565 I test2 : at com.android.server.wm.DisplayArea.reduceOnAllTaskDisplayAreas(DisplayArea.java:404)
Line 121342: 02-23 14:36:22.676 565 565 I test2 : at com.android.server.wm.DisplayArea.reduceOnAllTaskDisplayAreas(DisplayArea.java:404)
Line 121343: 02-23 14:36:22.676 565 565 I test2 : at com.android.server.wm.DisplayArea.reduceOnAllTaskDisplayAreas(DisplayArea.java:404)
Line 121344: 02-23 14:36:22.676 565 565 I test2 : at com.android.server.wm.WindowContainer.reduceOnAllTaskDisplayAreas(WindowContainer.java:2283)
Line 121345: 02-23 14:36:22.676 565 565 I test2 : at com.android.server.wm.RootWindowContainer.startHomeOnDisplay(RootWindowContainer.java:1433)
Line 121346: 02-23 14:36:22.676 565 565 I test2 : at com.android.server.wm.RootWindowContainer.startHomeOnDisplay(RootWindowContainer.java:1420)
Line 121347: 02-23 14:36:22.676 565 565 I test2 : at com.android.server.wm.RootWindowContainer.startHomeOnAllDisplays(RootWindowContainer.java:1405)
Line 121348: 02-23 14:36:22.676 565 565 I test2 : at com.android.server.wm.ActivityTaskManagerService$LocalService.startHomeOnAllDisplays(ActivityTaskManagerService.java:5892)
Line 121349: 02-23 14:36:22.676 565 565 I test2 : at com.android.server.am.ActivityManagerService.systemReady(ActivityManagerService.java:8203)
Line 121350: 02-23 14:36:22.676 565 565 I test2 : at com.android.server.SystemServer.startOtherServices(SystemServer.java:2801)
Line 121351: 02-23 14:36:22.676 565 565 I test2 : at com.android.server.SystemServer.run(SystemServer.java:939)
Line 121352: 02-23 14:36:22.676 565 565 I test2 : at com.android.server.SystemServer.main(SystemServer.java:649)
Line 121353: 02-23 14:36:22.676 565 565 I test2 : at java.lang.reflect.Method.invoke(Native Method)
Line 121354: 02-23 14:36:22.676 565 565 I test2 : at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:548)
Line 121355: 02-23 14:36:22.676 565 565 I test2 : at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:914)
Line 121591: 02-23 14:36:22.681 565 565 I test2 : Task{63f31d4 #2 type=undefined A=1000:com.android.settings.FallbackHome U=0 rootTaskId=1 visible=true visibleRequested=false mode=fullscreen translucent=true sz=0} addChild child = ActivityRecord{983a135 u0 com.android.settings/.FallbackHome}
Line 121592: 02-23 14:36:22.681 565 565 I test2 : java.lang.Exception
Line 121593: 02-23 14:36:22.681 565 565 I test2 : at com.android.server.wm.WindowContainer.addChild(WindowContainer.java:727)
Line 121594: 02-23 14:36:22.681 565 565 I test2 : at com.android.server.wm.TaskFragment.addChild(TaskFragment.java:1835)
Line 121595: 02-23 14:36:22.681 565 565 I test2 : at com.android.server.wm.Task.addChild(Task.java:1429)
Line 121596: 02-23 14:36:22.681 565 565 I test2 : at com.android.server.wm.ActivityStarter.addOrReparentStartingActivity(ActivityStarter.java:2927)
Line 121597: 02-23 14:36:22.681 565 565 I test2 : at com.android.server.wm.ActivityStarter.setNewTask(ActivityStarter.java:2877)
Line 121598: 02-23 14:36:22.681 565 565 I test2 : at com.android.server.wm.ActivityStarter.startActivityInner(ActivityStarter.java:1864)
Line 121599: 02-23 14:36:22.681 565 565 I test2 : at com.android.server.wm.ActivityStarter.startActivityUnchecked(ActivityStarter.java:1661)
Line 121600: 02-23 14:36:22.681 565 565 I test2 : at com.android.server.wm.ActivityStarter.executeRequest(ActivityStarter.java:1216)
Line 121601: 02-23 14:36:22.681 565 565 I test2 : at com.android.server.wm.ActivityStarter.execute(ActivityStarter.java:702)
Line 121602: 02-23 14:36:22.681 565 565 I test2 : at com.android.server.wm.ActivityStartController.startHomeActivity(ActivityStartController.java:179)
Line 121603: 02-23 14:36:22.681 565 565 I test2 : at com.android.server.wm.RootWindowContainer.startHomeOnTaskDisplayArea(RootWindowContainer.java:1493)
Line 121604: 02-23 14:36:22.681 565 565 I test2 : at com.android.server.wm.RootWindowContainer.lambda$startHomeOnDisplay$12$com-android-server-wm-RootWindowContainer(RootWindowContainer.java:1434)
Line 121605: 02-23 14:36:22.681 565 565 I test2 : at com.android.server.wm.RootWindowContainer$$ExternalSyntheticLambda7.apply(Unknown Source:16)
Line 121606: 02-23 14:36:22.681 565 565 I test2 : at com.android.server.wm.TaskDisplayArea.reduceOnAllTaskDisplayAreas(TaskDisplayArea.java:513)
Line 121607: 02-23 14:36:22.681 565 565 I test2 : at com.android.server.wm.DisplayArea.reduceOnAllTaskDisplayAreas(DisplayArea.java:404)
Line 121608: 02-23 14:36:22.681 565 565 I test2 : at com.android.server.wm.DisplayArea.reduceOnAllTaskDisplayAreas(DisplayArea.java:404)
Line 121609: 02-23 14:36:22.681 565 565 I test2 : at com.android.server.wm.DisplayArea.reduceOnAllTaskDisplayAreas(DisplayArea.java:404)
Line 121610: 02-23 14:36:22.681 565 565 I test2 : at com.android.server.wm.DisplayArea.reduceOnAllTaskDisplayAreas(DisplayArea.java:404)
Line 121611: 02-23 14:36:22.681 565 565 I test2 : at com.android.server.wm.DisplayArea.reduceOnAllTaskDisplayAreas(DisplayArea.java:404)
Line 121612: 02-23 14:36:22.681 565 565 I test2 : at com.android.server.wm.WindowContainer.reduceOnAllTaskDisplayAreas(WindowContainer.java:2283)
Line 121613: 02-23 14:36:22.681 565 565 I test2 : at com.android.server.wm.RootWindowContainer.startHomeOnDisplay(RootWindowContainer.java:1433)
Line 121614: 02-23 14:36:22.681 565 565 I test2 : at com.android.server.wm.RootWindowContainer.startHomeOnDisplay(RootWindowContainer.java:1420)
Line 121615: 02-23 14:36:22.681 565 565 I test2 : at com.android.server.wm.RootWindowContainer.startHomeOnAllDisplays(RootWindowContainer.java:1405)
Line 121616: 02-23 14:36:22.681 565 565 I test2 : at com.android.server.wm.ActivityTaskManagerService$LocalService.startHomeOnAllDisplays(ActivityTaskManagerService.java:5892)
Line 121617: 02-23 14:36:22.681 565 565 I test2 : at com.android.server.am.ActivityManagerService.systemReady(ActivityManagerService.java:8203)
Line 121618: 02-23 14:36:22.681 565 565 I test2 : at com.android.server.SystemServer.startOtherServices(SystemServer.java:2801)
Line 121619: 02-23 14:36:22.681 565 565 I test2 : at com.android.server.SystemServer.run(SystemServer.java:939)
Line 121620: 02-23 14:36:22.681 565 565 I test2 : at com.android.server.SystemServer.main(SystemServer.java:649)
Line 121621: 02-23 14:36:22.681 565 565 I test2 : at java.lang.reflect.Method.invoke(Native Method)
Line 121622: 02-23 14:36:22.681 565 565 I test2 : at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:548)
Line 121623: 02-23 14:36:22.681 565 565 I test2 : at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:914)
Line 130729: 02-23 14:36:23.276 565 627 I test2 : ActivityRecord{983a135 u0 com.android.settings/.FallbackHome} t2} addChild Comparator child = Window{ae9b359 u0 com.android.settings/com.android.settings.FallbackHome}
Line 130730: 02-23 14:36:23.276 565 627 I test2 : java.lang.Exception
Line 130731: 02-23 14:36:23.276 565 627 I test2 : at com.android.server.wm.WindowContainer.addChild(WindowContainer.java:694)
Line 130732: 02-23 14:36:23.276 565 627 I test2 : at com.android.server.wm.WindowToken.addWindow(WindowToken.java:302)
Line 130733: 02-23 14:36:23.276 565 627 I test2 : at com.android.server.wm.ActivityRecord.addWindow(ActivityRecord.java:4212)
Line 130734: 02-23 14:36:23.276 565 627 I test2 : at com.android.server.wm.WindowManagerService.addWindow(WindowManagerService.java:1773)
Line 130735: 02-23 14:36:23.276 565 627 I test2 : at com.android.server.wm.Session.addToDisplayAsUser(Session.java:209)
Line 130736: 02-23 14:36:23.276 565 627 I test2 : at android.view.IWindowSession$Stub.onTransact(IWindowSession.java:652)
Line 130737: 02-23 14:36:23.276 565 627 I test2 : at com.android.server.wm.Session.onTransact(Session.java:175)
Line 130738: 02-23 14:36:23.276 565 627 I test2 : at android.os.Binder.execTransactInternal(Binder.java:1280)
Line 130739: 02-23 14:36:23.276 565 627 I test2 : at android.os.Binder.execTransact(Binder.java:1244)
Line 131587: 02-23 14:36:23.439 565 582 I test2 : DefaultTaskDisplayArea@243571827 addChild child = Task{6d173bf #3 type=undefined ?? U=0 visible=false visibleRequested=false mode=undefined translucent=true sz=0}
Line 131588: 02-23 14:36:23.439 565 582 I test2 : java.lang.Exception
Line 131589: 02-23 14:36:23.439 565 582 I test2 : at com.android.server.wm.WindowContainer.addChild(WindowContainer.java:727)
Line 131590: 02-23 14:36:23.439 565 582 I test2 : at com.android.server.wm.TaskDisplayArea.addChildTask(TaskDisplayArea.java:334)
Line 131591: 02-23 14:36:23.439 565 582 I test2 : at com.android.server.wm.TaskDisplayArea.addChild(TaskDisplayArea.java:320)
Line 131592: 02-23 14:36:23.439 565 582 I test2 : at com.android.server.wm.Task$Builder.build(Task.java:6551)
Line 131593: 02-23 14:36:23.439 565 582 I test2 : at com.android.server.wm.TaskOrganizerController.createRootTask(TaskOrganizerController.java:662)
Line 131594: 02-23 14:36:23.439 565 582 I test2 : at com.android.server.wm.TaskOrganizerController.createRootTask(TaskOrganizerController.java:641)
Line 131595: 02-23 14:36:23.439 565 582 I test2 : at android.window.ITaskOrganizerController$Stub.onTransact(ITaskOrganizerController.java:211)
Line 131596: 02-23 14:36:23.439 565 582 I test2 : at com.android.server.wm.TaskOrganizerController.onTransact(TaskOrganizerController.java:342)
Line 131597: 02-23 14:36:23.439 565 582 I test2 : at android.os.Binder.execTransactInternal(Binder.java:1280)
Line 131598: 02-23 14:36:23.439 565 582 I test2 : at android.os.Binder.execTransact(Binder.java:1244)
Line 132441: 02-23 14:36:23.673 565 582 I test2 : DefaultTaskDisplayArea@243571827 addChild child = Task{572ca1 #4 type=undefined ?? U=0 visible=false visibleRequested=false mode=undefined translucent=true sz=0}
Line 132442: 02-23 14:36:23.673 565 582 I test2 : java.lang.Exception
Line 132443: 02-23 14:36:23.673 565 582 I test2 : at com.android.server.wm.WindowContainer.addChild(WindowContainer.java:727)
Line 132444: 02-23 14:36:23.673 565 582 I test2 : at com.android.server.wm.TaskDisplayArea.addChildTask(TaskDisplayArea.java:334)
Line 132445: 02-23 14:36:23.673 565 582 I test2 : at com.android.server.wm.TaskDisplayArea.addChild(TaskDisplayArea.java:320)
Line 132446: 02-23 14:36:23.673 565 582 I test2 : at com.android.server.wm.Task$Builder.build(Task.java:6551)
Line 132447: 02-23 14:36:23.673 565 582 I test2 : at com.android.server.wm.TaskOrganizerController.createRootTask(TaskOrganizerController.java:662)
Line 132448: 02-23 14:36:23.673 565 582 I test2 : at com.android.server.wm.TaskOrganizerController.createRootTask(TaskOrganizerController.java:641)
Line 132449: 02-23 14:36:23.673 565 582 I test2 : at android.window.ITaskOrganizerController$Stub.onTransact(ITaskOrganizerController.java:211)
Line 132450: 02-23 14:36:23.673 565 582 I test2 : at com.android.server.wm.TaskOrganizerController.onTransact(TaskOrganizerController.java:342)
Line 132451: 02-23 14:36:23.673 565 582 I test2 : at android.os.Binder.execTransactInternal(Binder.java:1280)
Line 132452: 02-23 14:36:23.673 565 582 I test2 : at android.os.Binder.execTransact(Binder.java:1244)
Line 132579: 02-23 14:36:23.681 565 627 I test2 : DefaultTaskDisplayArea@243571827 addChild child = Task{ecd7f95 #5 type=undefined ?? U=0 visible=false visibleRequested=false mode=undefined translucent=true sz=0}
Line 132580: 02-23 14:36:23.681 565 627 I test2 : java.lang.Exception
Line 132581: 02-23 14:36:23.681 565 627 I test2 : at com.android.server.wm.WindowContainer.addChild(WindowContainer.java:727)
Line 132582: 02-23 14:36:23.681 565 627 I test2 : at com.android.server.wm.TaskDisplayArea.addChildTask(TaskDisplayArea.java:334)
Line 132583: 02-23 14:36:23.681 565 627 I test2 : at com.android.server.wm.TaskDisplayArea.addChild(TaskDisplayArea.java:320)
Line 132584: 02-23 14:36:23.681 565 627 I test2 : at com.android.server.wm.Task$Builder.build(Task.java:6551)
Line 132585: 02-23 14:36:23.681 565 627 I test2 : at com.android.server.wm.TaskOrganizerController.createRootTask(TaskOrganizerController.java:662)
Line 132586: 02-23 14:36:23.681 565 627 I test2 : at com.android.server.wm.TaskOrganizerController.createRootTask(TaskOrganizerController.java:641)
Line 132587: 02-23 14:36:23.681 565 627 I test2 : at android.window.ITaskOrganizerController$Stub.onTransact(ITaskOrganizerController.java:211)
Line 132588: 02-23 14:36:23.681 565 627 I test2 : at com.android.server.wm.TaskOrganizerController.onTransact(TaskOrganizerController.java:342)
Line 132589: 02-23 14:36:23.681 565 627 I test2 : at android.os.Binder.execTransactInternal(Binder.java:1280)
Line 132590: 02-23 14:36:23.681 565 627 I test2 : at android.os.Binder.execTransact(Binder.java:1244)
Line 132956: 02-23 14:36:23.694 565 627 I test2 : DefaultTaskDisplayArea@243571827 addChild child = Task{47b0380 #6 type=undefined ?? U=0 visible=false visibleRequested=false mode=undefined translucent=true sz=0}
Line 132957: 02-23 14:36:23.694 565 627 I test2 : java.lang.Exception
Line 132958: 02-23 14:36:23.694 565 627 I test2 : at com.android.server.wm.WindowContainer.addChild(WindowContainer.java:727)
Line 132959: 02-23 14:36:23.694 565 627 I test2 : at com.android.server.wm.TaskDisplayArea.addChildTask(TaskDisplayArea.java:334)
Line 132960: 02-23 14:36:23.694 565 627 I test2 : at com.android.server.wm.TaskDisplayArea.addChild(TaskDisplayArea.java:320)
Line 132961: 02-23 14:36:23.694 565 627 I test2 : at com.android.server.wm.Task$Builder.build(Task.java:6551)
Line 132962: 02-23 14:36:23.694 565 627 I test2 : at com.android.server.wm.TaskOrganizerController.createRootTask(TaskOrganizerController.java:662)
Line 132963: 02-23 14:36:23.694 565 627 I test2 : at com.android.server.wm.TaskOrganizerController.createRootTask(TaskOrganizerController.java:641)
Line 132964: 02-23 14:36:23.694 565 627 I test2 : at android.window.ITaskOrganizerController$Stub.onTransact(ITaskOrganizerController.java:211)
Line 132965: 02-23 14:36:23.694 565 627 I test2 : at com.android.server.wm.TaskOrganizerController.onTransact(TaskOrganizerController.java:342)
Line 132966: 02-23 14:36:23.694 565 627 I test2 : at android.os.Binder.execTransactInternal(Binder.java:1280)
Line 132967: 02-23 14:36:23.694 565 627 I test2 : at android.os.Binder.execTransact(Binder.java:1244)
Line 135188: 02-23 14:36:23.806 565 917 I test2 : WindowToken{441cfb3 type=2038 android.os.BinderProxy@b7ed012} addChild Comparator child = Window{c50e0b1 u0 ShellDropTarget}
Line 135189: 02-23 14:36:23.806 565 917 I test2 : java.lang.Exception
Line 135190: 02-23 14:36:23.806 565 917 I test2 : at com.android.server.wm.WindowContainer.addChild(WindowContainer.java:694)
Line 135191: 02-23 14:36:23.806 565 917 I test2 : at com.android.server.wm.WindowToken.addWindow(WindowToken.java:302)
Line 135192: 02-23 14:36:23.806 565 917 I test2 : at com.android.server.wm.WindowManagerService.addWindow(WindowManagerService.java:1773)
Line 135193: 02-23 14:36:23.806 565 917 I test2 : at com.android.server.wm.Session.addToDisplayAsUser(Session.java:209)
Line 135194: 02-23 14:36:23.806 565 917 I test2 : at android.view.IWindowSession$Stub.onTransact(IWindowSession.java:652)
Line 135195: 02-23 14:36:23.806 565 917 I test2 : at com.android.server.wm.Session.onTransact(Session.java:175)
Line 135196: 02-23 14:36:23.806 565 917 I test2 : at android.os.Binder.execTransactInternal(Binder.java:1280)
Line 135197: 02-23 14:36:23.806 565 917 I test2 : at android.os.Binder.execTransact(Binder.java:1244)
Line 142014: 02-23 14:36:17.668 565 627 I test2 : WindowToken{1d09304 type=2024 android.os.BinderProxy@82f6cca} addChild Comparator child = Window{bb200ed u0 ScreenDecorOverlay}
Line 142015: 02-23 14:36:17.668 565 627 I test2 : java.lang.Exception
Line 142016: 02-23 14:36:17.668 565 627 I test2 : at com.android.server.wm.WindowContainer.addChild(WindowContainer.java:694)
Line 142017: 02-23 14:36:17.668 565 627 I test2 : at com.android.server.wm.WindowToken.addWindow(WindowToken.java:302)
Line 142018: 02-23 14:36:17.668 565 627 I test2 : at com.android.server.wm.WindowManagerService.addWindow(WindowManagerService.java:1773)
Line 142019: 02-23 14:36:17.668 565 627 I test2 : at com.android.server.wm.Session.addToDisplayAsUser(Session.java:209)
Line 142020: 02-23 14:36:17.668 565 627 I test2 : at android.view.IWindowSession$Stub.onTransact(IWindowSession.java:652)
Line 142021: 02-23 14:36:17.668 565 627 I test2 : at com.android.server.wm.Session.onTransact(Session.java:175)
Line 142022: 02-23 14:36:17.668 565 627 I test2 : at android.os.Binder.execTransactInternal(Binder.java:1280)
Line 142023: 02-23 14:36:17.668 565 627 I test2 : at android.os.Binder.execTransact(Binder.java:1244)
Line 143514: 02-23 14:36:17.815 565 627 I test2 : WindowToken{ebdfca9 type=2024 android.os.BinderProxy@eb5be56} addChild Comparator child = Window{d96422e u0 ScreenDecorOverlayBottom}
Line 143515: 02-23 14:36:17.815 565 627 I test2 : java.lang.Exception
Line 143516: 02-23 14:36:17.815 565 627 I test2 : at com.android.server.wm.WindowContainer.addChild(WindowContainer.java:694)
Line 143517: 02-23 14:36:17.815 565 627 I test2 : at com.android.server.wm.WindowToken.addWindow(WindowToken.java:302)
Line 143518: 02-23 14:36:17.815 565 627 I test2 : at com.android.server.wm.WindowManagerService.addWindow(WindowManagerService.java:1773)
Line 143519: 02-23 14:36:17.815 565 627 I test2 : at com.android.server.wm.Session.addToDisplayAsUser(Session.java:209)
Line 143520: 02-23 14:36:17.815 565 627 I test2 : at android.view.IWindowSession$Stub.onTransact(IWindowSession.java:652)
Line 143521: 02-23 14:36:17.815 565 627 I test2 : at com.android.server.wm.Session.onTransact(Session.java:175)
Line 143522: 02-23 14:36:17.815 565 627 I test2 : at android.os.Binder.execTransactInternal(Binder.java:1280)
Line 143523: 02-23 14:36:17.815 565 627 I test2 : at android.os.Binder.execTransact(Binder.java:1244)
Line 187123: 02-23 14:36:19.865 565 914 I test2 : WindowToken{ddad912 type=2019 android.os.BinderProxy@fa6276b} addChild Comparator child = Window{a3e18e3 u0 NavigationBar0}
Line 187124: 02-23 14:36:19.865 565 914 I test2 : java.lang.Exception
Line 187125: 02-23 14:36:19.865 565 914 I test2 : at com.android.server.wm.WindowContainer.addChild(WindowContainer.java:694)
Line 187126: 02-23 14:36:19.865 565 914 I test2 : at com.android.server.wm.WindowToken.addWindow(WindowToken.java:302)
Line 187127: 02-23 14:36:19.865 565 914 I test2 : at com.android.server.wm.WindowManagerService.addWindow(WindowManagerService.java:1773)
Line 187128: 02-23 14:36:19.865 565 914 I test2 : at com.android.server.wm.Session.addToDisplayAsUser(Session.java:209)
Line 187129: 02-23 14:36:19.865 565 914 I test2 : at android.view.IWindowSession$Stub.onTransact(IWindowSession.java:652)
Line 187130: 02-23 14:36:19.865 565 914 I test2 : at com.android.server.wm.Session.onTransact(Session.java:175)
Line 187131: 02-23 14:36:19.865 565 914 I test2 : at android.os.Binder.execTransactInternal(Binder.java:1280)
Line 187132: 02-23 14:36:19.865 565 914 I test2 : at android.os.Binder.execTransact(Binder.java:1244)
Line 188254: 02-23 14:36:19.953 565 627 I test2 : WindowToken{df66140 type=2040 android.os.BinderProxy@8cb6241} addChild Comparator child = Window{b091879 u0 NotificationShade}
Line 188255: 02-23 14:36:19.953 565 627 I test2 : java.lang.Exception
Line 188256: 02-23 14:36:19.953 565 627 I test2 : at com.android.server.wm.WindowContainer.addChild(WindowContainer.java:694)
Line 188257: 02-23 14:36:19.953 565 627 I test2 : at com.android.server.wm.WindowToken.addWindow(WindowToken.java:302)
Line 188258: 02-23 14:36:19.953 565 627 I test2 : at com.android.server.wm.WindowManagerService.addWindow(WindowManagerService.java:1773)
Line 188259: 02-23 14:36:19.953 565 627 I test2 : at com.android.server.wm.Session.addToDisplayAsUser(Session.java:209)
Line 188260: 02-23 14:36:19.953 565 627 I test2 : at android.view.IWindowSession$Stub.onTransact(IWindowSession.java:652)
Line 188261: 02-23 14:36:19.953 565 627 I test2 : at com.android.server.wm.Session.onTransact(Session.java:175)
Line 188262: 02-23 14:36:19.953 565 627 I test2 : at android.os.Binder.execTransactInternal(Binder.java:1280)
Line 188263: 02-23 14:36:19.953 565 627 I test2 : at android.os.Binder.execTransact(Binder.java:1244)
Line 189558: 02-23 14:36:19.973 565 627 I test2 : WindowToken{ea411e9 type=2000 android.os.BinderProxy@46a0296} addChild Comparator child = Window{c86ce6e u0 StatusBar}
Line 189559: 02-23 14:36:19.973 565 627 I test2 : java.lang.Exception
Line 189560: 02-23 14:36:19.973 565 627 I test2 : at com.android.server.wm.WindowContainer.addChild(WindowContainer.java:694)
Line 189561: 02-23 14:36:19.973 565 627 I test2 : at com.android.server.wm.WindowToken.addWindow(WindowToken.java:302)
Line 189562: 02-23 14:36:19.973 565 627 I test2 : at com.android.server.wm.WindowManagerService.addWindow(WindowManagerService.java:1773)
Line 189563: 02-23 14:36:19.973 565 627 I test2 : at com.android.server.wm.Session.addToDisplayAsUser(Session.java:209)
Line 189564: 02-23 14:36:19.973 565 627 I test2 : at android.view.IWindowSession$Stub.onTransact(IWindowSession.java:652)
Line 189565: 02-23 14:36:19.973 565 627 I test2 : at com.android.server.wm.Session.onTransact(Session.java:175)
Line 189566: 02-23 14:36:19.973 565 627 I test2 : at android.os.Binder.execTransactInternal(Binder.java:1280)
Line 189567: 02-23 14:36:19.973 565 627 I test2 : at android.os.Binder.execTransact(Binder.java:1244)
Line 192046: 02-23 14:36:20.229 565 914 I test2 : Task{572ca1 #4 type=undefined ?? U=0 visible=false visibleRequested=false mode=fullscreen translucent=true sz=0} addChild child = Task{ecd7f95 #5 type=undefined ?? U=0 visible=false visibleRequested=false mode=multi-window translucent=true sz=0}
Line 192047: 02-23 14:36:20.229 565 914 I test2 : java.lang.Exception
Line 192048: 02-23 14:36:20.229 565 914 I test2 : at com.android.server.wm.WindowContainer.addChild(WindowContainer.java:727)
Line 192049: 02-23 14:36:20.229 565 914 I test2 : at com.android.server.wm.TaskFragment.addChild(TaskFragment.java:1835)
Line 192050: 02-23 14:36:20.229 565 914 I test2 : at com.android.server.wm.Task.addChild(Task.java:1429)
Line 192051: 02-23 14:36:20.229 565 914 I test2 : at com.android.server.wm.WindowContainer.reparent(WindowContainer.java:539)
Line 192052: 02-23 14:36:20.229 565 914 I test2 : at com.android.server.wm.Task.reparent(Task.java:2597)
Line 192053: 02-23 14:36:20.229 565 914 I test2 : at com.android.server.wm.WindowOrganizerController.sanitizeAndApplyHierarchyOp(WindowOrganizerController.java:1067)
Line 192054: 02-23 14:36:20.229 565 914 I test2 : at com.android.server.wm.WindowOrganizerController.applyHierarchyOp(WindowOrganizerController.java:886)
Line 192055: 02-23 14:36:20.229 565 914 I test2 : at com.android.server.wm.WindowOrganizerController.applyTransaction(WindowOrganizerController.java:443)
Line 192056: 02-23 14:36:20.229 565 914 I test2 : at com.android.server.wm.WindowOrganizerController.applyTransaction(WindowOrganizerController.java:372)
Line 192057: 02-23 14:36:20.229 565 914 I test2 : at com.android.server.wm.WindowOrganizerController.applyTransaction(WindowOrganizerController.java:179)
Line 192058: 02-23 14:36:20.229 565 914 I test2 : at android.window.IWindowOrganizerController$Stub.onTransact(IWindowOrganizerController.java:204)
Line 192059: 02-23 14:36:20.229 565 914 I test2 : at com.android.server.wm.WindowOrganizerController.onTransact(WindowOrganizerController.java:163)
Line 192060: 02-23 14:36:20.229 565 914 I test2 : at android.os.Binder.execTransactInternal(Binder.java:1280)
Line 192061: 02-23 14:36:20.229 565 914 I test2 : at android.os.Binder.execTransact(Binder.java:1244)
Line 192186: 02-23 14:36:20.231 565 914 I test2 : Task{572ca1 #4 type=undefined ?? U=0 visible=false visibleRequested=false mode=fullscreen translucent=true sz=1} addChild child = Task{47b0380 #6 type=undefined ?? U=0 visible=false visibleRequested=false mode=multi-window translucent=true sz=0}
Line 192187: 02-23 14:36:20.231 565 914 I test2 : java.lang.Exception
Line 192188: 02-23 14:36:20.231 565 914 I test2 : at com.android.server.wm.WindowContainer.addChild(WindowContainer.java:727)
Line 192189: 02-23 14:36:20.231 565 914 I test2 : at com.android.server.wm.TaskFragment.addChild(TaskFragment.java:1835)
Line 192190: 02-23 14:36:20.231 565 914 I test2 : at com.android.server.wm.Task.addChild(Task.java:1429)
Line 192191: 02-23 14:36:20.231 565 914 I test2 : at com.android.server.wm.WindowContainer.reparent(WindowContainer.java:539)
Line 192192: 02-23 14:36:20.231 565 914 I test2 : at com.android.server.wm.Task.reparent(Task.java:2597)
Line 192193: 02-23 14:36:20.231 565 914 I test2 : at com.android.server.wm.WindowOrganizerController.sanitizeAndApplyHierarchyOp(WindowOrganizerController.java:1067)
Line 192194: 02-23 14:36:20.231 565 914 I test2 : at com.android.server.wm.WindowOrganizerController.applyHierarchyOp(WindowOrganizerController.java:886)
Line 192195: 02-23 14:36:20.231 565 914 I test2 : at com.android.server.wm.WindowOrganizerController.applyTransaction(WindowOrganizerController.java:443)
Line 192196: 02-23 14:36:20.231 565 914 I test2 : at com.android.server.wm.WindowOrganizerController.applyTransaction(WindowOrganizerController.java:372)
Line 192197: 02-23 14:36:20.231 565 914 I test2 : at com.android.server.wm.WindowOrganizerController.applyTransaction(WindowOrganizerController.java:179)
Line 192198: 02-23 14:36:20.231 565 914 I test2 : at android.window.IWindowOrganizerController$Stub.onTransact(IWindowOrganizerController.java:204)
Line 192199: 02-23 14:36:20.231 565 914 I test2 : at com.android.server.wm.WindowOrganizerController.onTransact(WindowOrganizerController.java:163)
Line 192200: 02-23 14:36:20.231 565 914 I test2 : at android.os.Binder.execTransactInternal(Binder.java:1280)
Line 192201: 02-23 14:36:20.231 565 914 I test2 : at android.os.Binder.execTransact(Binder.java:1244)
Line 197740: 02-23 14:36:20.864 565 727 I test2 : WallpaperWindowToken{975f25a token=android.os.Binder@31c1850} addChild Comparator child = Window{81d7fa3 u0 com.android.systemui.ImageWallpaper}
Line 197741: 02-23 14:36:20.864 565 727 I test2 : java.lang.Exception
Line 197742: 02-23 14:36:20.864 565 727 I test2 : at com.android.server.wm.WindowContainer.addChild(WindowContainer.java:694)
Line 197743: 02-23 14:36:20.864 565 727 I test2 : at com.android.server.wm.WindowToken.addWindow(WindowToken.java:302)
Line 197744: 02-23 14:36:20.864 565 727 I test2 : at com.android.server.wm.WindowManagerService.addWindow(WindowManagerService.java:1773)
Line 197745: 02-23 14:36:20.864 565 727 I test2 : at com.android.server.wm.Session.addToDisplay(Session.java:199)
Line 197746: 02-23 14:36:20.864 565 727 I test2 : at android.view.IWindowSession$Stub.onTransact(IWindowSession.java:618)
Line 197747: 02-23 14:36:20.864 565 727 I test2 : at com.android.server.wm.Session.onTransact(Session.java:175)
Line 197748: 02-23 14:36:20.864 565 727 I test2 : at android.os.Binder.execTransactInternal(Binder.java:1280)
Line 197749: 02-23 14:36:20.864 565 727 I test2 : at android.os.Binder.execTransact(Binder.java:1244)
Line 198378: 02-23 14:36:20.970 565 914 I test2 : WindowToken{9de7f85 type=2024 android.os.BinderProxy@23d9793} addChild Comparator child = Window{47501da u0 pip-dismiss-overlay}
Line 198379: 02-23 14:36:20.970 565 914 I test2 : java.lang.Exception
Line 198380: 02-23 14:36:20.970 565 914 I test2 : at com.android.server.wm.WindowContainer.addChild(WindowContainer.java:694)
Line 198381: 02-23 14:36:20.970 565 914 I test2 : at com.android.server.wm.WindowToken.addWindow(WindowToken.java:302)
Line 198382: 02-23 14:36:20.970 565 914 I test2 : at com.android.server.wm.WindowManagerService.addWindow(WindowManagerService.java:1773)
Line 198383: 02-23 14:36:20.970 565 914 I test2 : at com.android.server.wm.Session.addToDisplayAsUser(Session.java:209)
Line 198384: 02-23 14:36:20.970 565 914 I test2 : at android.view.IWindowSession$Stub.onTransact(IWindowSession.java:652)
Line 198385: 02-23 14:36:20.970 565 914 I test2 : at com.android.server.wm.Session.onTransact(Session.java:175)
Line 198386: 02-23 14:36:20.970 565 914 I test2 : at android.os.Binder.execTransactInternal(Binder.java:1280)
Line 198387: 02-23 14:36:20.970 565 914 I test2 : at android.os.Binder.execTransact(Binder.java:1244)
Line 201889: 02-23 14:36:21.578 565 914 I test2 : DefaultTaskDisplayArea@243571827 addChild child = Task{4fbc455 #7 type=standard ?? U=0 visible=false visibleRequested=false mode=undefined translucent=true sz=0}
Line 201890: 02-23 14:36:21.578 565 914 I test2 : java.lang.Exception
Line 201891: 02-23 14:36:21.578 565 914 I test2 : at com.android.server.wm.WindowContainer.addChild(WindowContainer.java:727)
Line 201892: 02-23 14:36:21.578 565 914 I test2 : at com.android.server.wm.TaskDisplayArea.addChildTask(TaskDisplayArea.java:334)
Line 201893: 02-23 14:36:21.578 565 914 I test2 : at com.android.server.wm.TaskDisplayArea.addChild(TaskDisplayArea.java:320)
Line 201894: 02-23 14:36:21.578 565 914 I test2 : at com.android.server.wm.Task$Builder.build(Task.java:6551)
Line 201895: 02-23 14:36:21.578 565 914 I test2 : at com.android.server.wm.TaskDisplayArea.getOrCreateRootTask(TaskDisplayArea.java:1005)
Line 201896: 02-23 14:36:21.578 565 914 I test2 : at com.android.server.wm.TaskDisplayArea.getOrCreateRootTask(TaskDisplayArea.java:1030)
Line 201897: 02-23 14:36:21.578 565 914 I test2 : at com.android.server.wm.RootWindowContainer.getOrCreateRootTask(RootWindowContainer.java:2838)
Line 201898: 02-23 14:36:21.578 565 914 I test2 : at com.android.server.wm.ActivityStarter.getOrCreateRootTask(ActivityStarter.java:3017)
Line 201899: 02-23 14:36:21.578 565 914 I test2 : at com.android.server.wm.ActivityStarter.startActivityInner(ActivityStarter.java:1858)
Line 201900: 02-23 14:36:21.578 565 914 I test2 : at com.android.server.wm.ActivityStarter.startActivityUnchecked(ActivityStarter.java:1661)
Line 201901: 02-23 14:36:21.578 565 914 I test2 : at com.android.server.wm.ActivityStarter.executeRequest(ActivityStarter.java:1216)
Line 201902: 02-23 14:36:21.578 565 914 I test2 : at com.android.server.wm.ActivityStarter.execute(ActivityStarter.java:702)
Line 201903: 02-23 14:36:21.578 565 914 I test2 : at com.android.server.wm.ActivityTaskManagerService.startActivityAsUser(ActivityTaskManagerService.java:1240)
Line 201904: 02-23 14:36:21.578 565 914 I test2 : at com.android.server.wm.ActivityTaskManagerService.startActivityAsUser(ActivityTaskManagerService.java:1203)
Line 201905: 02-23 14:36:21.578 565 914 I test2 : at com.android.server.wm.ActivityTaskManagerService.startActivity(ActivityTaskManagerService.java:1178)
Line 201906: 02-23 14:36:21.578 565 914 I test2 : at android.app.IActivityTaskManager$Stub.onTransact(IActivityTaskManager.java:893)
Line 201907: 02-23 14:36:21.578 565 914 I test2 : at com.android.server.wm.ActivityTaskManagerService.onTransact(ActivityTaskManagerService.java:5183)
Line 201908: 02-23 14:36:21.578 565 914 I test2 : at android.os.Binder.execTransactInternal(Binder.java:1280)
Line 201909: 02-23 14:36:21.578 565 914 I test2 : at android.os.Binder.execTransact(Binder.java:1244)
Line 202080: 02-23 14:36:21.584 565 914 I test2 : Task{4fbc455 #7 type=standard A=1000:com.android.settings U=0 visible=false visibleRequested=false mode=fullscreen translucent=true sz=0} addChild child = ActivityRecord{4d8c7a4 u0 com.android.settings/.sim.SimDialogActivity}
Line 202081: 02-23 14:36:21.584 565 914 I test2 : java.lang.Exception
Line 202082: 02-23 14:36:21.584 565 914 I test2 : at com.android.server.wm.WindowContainer.addChild(WindowContainer.java:727)
Line 202083: 02-23 14:36:21.584 565 914 I test2 : at com.android.server.wm.TaskFragment.addChild(TaskFragment.java:1835)
Line 202084: 02-23 14:36:21.584 565 914 I test2 : at com.android.server.wm.Task.addChild(Task.java:1429)
Line 202085: 02-23 14:36:21.584 565 914 I test2 : at com.android.server.wm.ActivityStarter.addOrReparentStartingActivity(ActivityStarter.java:2927)
Line 202086: 02-23 14:36:21.584 565 914 I test2 : at com.android.server.wm.ActivityStarter.setNewTask(ActivityStarter.java:2877)
Line 202087: 02-23 14:36:21.584 565 914 I test2 : at com.android.server.wm.ActivityStarter.startActivityInner(ActivityStarter.java:1864)
Line 202088: 02-23 14:36:21.584 565 914 I test2 : at com.android.server.wm.ActivityStarter.startActivityUnchecked(ActivityStarter.java:1661)
Line 202089: 02-23 14:36:21.584 565 914 I test2 : at com.android.server.wm.ActivityStarter.executeRequest(ActivityStarter.java:1216)
Line 202090: 02-23 14:36:21.584 565 914 I test2 : at com.android.server.wm.ActivityStarter.execute(ActivityStarter.java:702)
Line 202091: 02-23 14:36:21.584 565 914 I test2 : at com.android.server.wm.ActivityTaskManagerService.startActivityAsUser(ActivityTaskManagerService.java:1240)
Line 202092: 02-23 14:36:21.584 565 914 I test2 : at com.android.server.wm.ActivityTaskManagerService.startActivityAsUser(ActivityTaskManagerService.java:1203)
Line 202093: 02-23 14:36:21.584 565 914 I test2 : at com.android.server.wm.ActivityTaskManagerService.startActivity(ActivityTaskManagerService.java:1178)
Line 202094: 02-23 14:36:21.584 565 914 I test2 : at android.app.IActivityTaskManager$Stub.onTransact(IActivityTaskManager.java:893)
Line 202095: 02-23 14:36:21.584 565 914 I test2 : at com.android.server.wm.ActivityTaskManagerService.onTransact(ActivityTaskManagerService.java:5183)
Line 202096: 02-23 14:36:21.584 565 914 I test2 : at android.os.Binder.execTransactInternal(Binder.java:1280)
Line 202097: 02-23 14:36:21.584 565 914 I test2 : at android.os.Binder.execTransact(Binder.java:1244)
home task创建:
日志比较多,大家可以拷贝到notepad进行观看,这里我们先重点关注home task相关:
结合以前dumpsys activity containers发现home task直接被TaskDisplayArea持有为孩子,这里可以明显看出Task{a13d730 #1 type=home 是在第一次创建WMS就已经创建好了,通过的是
TaskDisplayArea.getOrCreateRootHomeTask开始一直到
com.android.server.wm.WindowContainer.addChild
DefaultTaskDisplayArea@243571827 addChild child = Task{a13d730 #1 type=home ?? U=0 visible=false visibleRequested=false mode=undefined translucent=true sz=0}
接下来 是home task加入一个具体Launcher的task,这里最开始当然是我们的FallbackHome
Task{a13d730 #1 type=home ?? U=0 visible=true visibleRequested=false mode=fullscreen translucent=true sz=0} addChild Comparator child = Task{63f31d4 #2 type=undefined A=1000:com.android.settings.FallbackHome U=0 visible=false visibleRequested=false mode=undefined translucent=true sz=0}
具体堆栈可以看出是ActivityManagerService.systemReady时候触发了ActivityTaskManagerService$LocalService.startHomeOnAllDisplays然后把HomeActivity拉起,由于此时还是加密状态,所以获取的的Home当然是setting的fallbackhome
com.android.server.wm.RootWindowContainer.startHomeOnAllDisplays(RootWindowContainer.java:1405)
com.android.server.wm.ActivityTaskManagerService$LocalService.startHomeOnAllDisplays(ActivityTaskManagerService.java:5892)
com.android.server.am.ActivityManagerService.systemReady(ActivityManagerService.java:8203)
再接下来是ActivityRecord的放入:
Task{63f31d4 #2 type=undefined A=1000:com.android.settings.FallbackHome U=0 rootTaskId=1 visible=true visibleRequested=false mode=fullscreen translucent=true sz=0} addChild child = ActivityRecord{983a135 u0 com.android.settings/.FallbackHome}
触这里和Task一样流程,都是因为ActivityStartController.startHomeActivity(ActivityStartController.java:179)导致:
WindowState的加入:
因为一般都是WindowToken来作为WindowState的父亲,ActivityRecord是WindowToken的子类:
ActivityRecord{983a135 u0 com.android.settings/.FallbackHome} t2} addChild Comparator child = Window{ae9b359 u0 com.android.settings/com.android.settings.FallbackHome}
这里是触发ActivityRecord加入WindowState,这个堆栈看明显是个应用端跨进程调用过来的,对这里也相对较熟悉,应用跨进程调用addToDisplayAsUser:
Line 130730: 02-23 14:36:23.276 565 627 I test2 : java.lang.Exception
Line 130731: 02-23 14:36:23.276 565 627 I test2 : at com.android.server.wm.WindowContainer.addChild(WindowContainer.java:694)
Line 130732: 02-23 14:36:23.276 565 627 I test2 : at com.android.server.wm.WindowToken.addWindow(WindowToken.java:302)
Line 130733: 02-23 14:36:23.276 565 627 I test2 : at com.android.server.wm.ActivityRecord.addWindow(ActivityRecord.java:4212)
Line 130734: 02-23 14:36:23.276 565 627 I test2 : at com.android.server.wm.WindowManagerService.addWindow(WindowManagerService.java:1773)
Line 130735: 02-23 14:36:23.276 565 627 I test2 : at com.android.server.wm.Session.addToDisplayAsUser(Session.java:209)
Line 130736: 02-23 14:36:23.276 565 627 I test2 : at android.view.IWindowSession$Stub.onTransact(IWindowSession.java:652)
Line 130737: 02-23 14:36:23.276 565 627 I test2 : at com.android.server.wm.Session.onTransact(Session.java:175)
Line 130738: 02-23 14:36:23.276 565 627 I test2 : at android.os.Binder.execTransactInternal(Binder.java:1280)
Line 130739: 02-23 14:36:23.276 565 627 I test2 : at android.os.Binder.execTransact(Binder.java:1244)
其他WindowToken类型的加入
这里WindowContainer的addChild堆栈需要加入WindowToken的判断
这里因为WindowToken的种类堆栈太多,这里就只以StatusBar为例写:
Leaf容器加入StatusBar的WindowToken
堆栈
Line 189151: 02-23 15:22:48.767 558 617 I test2 : Leaf:15:15@65133355 addChild Comparator child = WindowToken{9dd676f type=2000 android.os.BinderProxy@ce5e149}
Line 189152: 02-23 15:22:48.767 558 617 I test2 : java.lang.Exception
Line 189153: 02-23 15:22:48.767 558 617 I test2 : at com.android.server.wm.WindowContainer.addChild(WindowContainer.java:694)
Line 189154: 02-23 15:22:48.767 558 617 I test2 : at com.android.server.wm.DisplayArea$Tokens.addChild(DisplayArea.java:605)
Line 189155: 02-23 15:22:48.767 558 617 I test2 : at com.android.server.wm.DisplayContent.addWindowToken(DisplayContent.java:1235)
Line 189156: 02-23 15:22:48.767 558 617 I test2 : at com.android.server.wm.WindowToken.<init>(WindowToken.java:214)
Line 189157: 02-23 15:22:48.767 558 617 I test2 : at com.android.server.wm.WindowToken$Builder.build(WindowToken.java:817)
Line 189158: 02-23 15:22:48.767 558 617 I test2 : at com.android.server.wm.WindowManagerService.addWindow(WindowManagerService.java:1577)
Line 189159: 02-23 15:22:48.767 558 617 I test2 : at com.android.server.wm.Session.addToDisplayAsUser(Session.java:209)
Line 189160: 02-23 15:22:48.767 558 617 I test2 : at android.view.IWindowSession$Stub.onTransact(IWindowSession.java:652)
Line 189161: 02-23 15:22:48.767 558 617 I test2 : at com.android.server.wm.Session.onTransact(Session.java:175)
Line 189162: 02-23 15:22:48.767 558 617 I test2 : at android.os.Binder.execTransactInternal(Binder.java:1280)
Line 189163: 02-23 15:22:48.767 558 617 I test2 : at android.os.Binder.execTransact(Binder.java:1244)
02-23 15:22:48.767 558 617 I test2 : Leaf:15:15@65133355 addChild Comparator child = WindowToken{9dd676f type=2000 android.os.BinderProxy@ce5e149}
0
堆栈可以看出触发是由客户端的发起跨进程addToDisplayAsUser,会触发WindowManagerService.addWindow然后方法内会勾召一个新的WindowToken
WindowToken加入对应的StatusBar 的WindowState
堆栈
Line 189279: 02-23 15:22:48.773 558 617 I test2 : WindowToken{9dd676f type=2000 android.os.BinderProxy@ce5e149} addChild Comparator child = Window{b94d567 u0 StatusBar}
Line 189280: 02-23 15:22:48.773 558 617 I test2 : java.lang.Exception
Line 189281: 02-23 15:22:48.773 558 617 I test2 : at com.android.server.wm.WindowContainer.addChild(WindowContainer.java:694)
Line 189282: 02-23 15:22:48.773 558 617 I test2 : at com.android.server.wm.WindowToken.addWindow(WindowToken.java:302)
Line 189283: 02-23 15:22:48.773 558 617 I test2 : at com.android.server.wm.WindowManagerService.addWindow(WindowManagerService.java:1773)
Line 189284: 02-23 15:22:48.773 558 617 I test2 : at com.android.server.wm.Session.addToDisplayAsUser(Session.java:209)
Line 189285: 02-23 15:22:48.773 558 617 I test2 : at android.view.IWindowSession$Stub.onTransact(IWindowSession.java:652)
Line 189286: 02-23 15:22:48.773 558 617 I test2 : at com.android.server.wm.Session.onTransact(Session.java:175)
Line 189287: 02-23 15:22:48.773 558 617 I test2 : at android.os.Binder.execTransactInternal(Binder.java:1280)
Line 189288: 02-23 15:22:48.773 558 617 I test2 : at android.os.Binder.execTransact(Binder.java:1244)
这里从堆栈也可以看出来属于addToDisplayAsUser,只不过是发生再WindowToken已经创建,及WindowState也创建后,所以它相对执行肯定较晚