android 13 WMS/AMS系统开发-窗口层级相关Task/ActivityRecord/WindowState/WindowToken放置图层创建 第三节

android R版本应用程序窗口流程源码分析 应用启动时,Activity组件在启动之后,在执行完onResume生命周期之后会执行添加窗口到系统、计算窗口大小和位置、应用执行measure-layout-draw、系统窗口状态刷新这几个动作。 1、 addWindow阶段 Activity的启动本质实际最终也是使用WindowManager去addView(add一个DecorView对象)进而使得wms调用addWindow增加一个WindowState对象,而Activity的addView动作发生在Act...... 阅读详情
AI摘要

文章详细分析了Android系统中0-36层层级树的构建,特别是Task、ActivityRecord、WindowToken和WindowState的添加过程。首先,Task作为WindowContainer的子类被添加到层级树中,接着普通WindowToken的加入,然后是ActivityRecord作为Task的成员添加,最后是WindowState的创建和加入。整个过程涉及多个系统服务如ActivityTaskManagerService和WindowManagerService的交互,以及Binder跨进程通信。

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也创建后,所以它相对执行肯定较晚

海豚调度器(dolphinscheduler)再次使用,添加钉钉预警 1,首先我们部署是海豚调度器 1.3.8版本,由于页面只有邮件预警,所以在了解源码的同时,需要添加钉钉预警 2,说明,这一块是同事搞的,不是我搞的,新版本的dolphinscheduler已经有了钉钉模块,只是新版本还没有发布 3,我们现在只是添加简单的钉钉预警,任务成功或者失败会发送邮件+钉钉 4,具体操作 找到最新的源码devhttps://github1s.com/apache/dolphinscheduler/blob/dev/dolphinscheduler-alert/src/ma... 阅读详情

相关推荐

双通道中频信号数字下变频及相位差估计(FPGA)

双通道中频信号数字下变频及相位差估计实验 一、上框图(通俗易懂) 二、实验要求 1、 用点频信号模拟中频信号:中频信号由DDS1和DDS2产生。具体产生方法见第2点。 2、 DDS1和 DDS2:调用IPcore里的数字信号处理中的NCO模块,工作时钟为100MHz,数据率即为100MHz,DDS1和DDS2的频率为:(学号后三位+500)Khz+f0(可设为20MHz);输出为16位;DDS1...

qq_39809425的博客 6942

Android应用程序窗口与WindowManagerService服务的连接过程,即WindowState的创建过程

Activity组件在其窗口对象和视图对象创建完成之后,就会请求与WindowManagerService建立一个连接,即请求WindowManagerService为其增加一个WindowState对象,用来描述它的窗口状态。在本文中,我们就详细分析Activity组件与WindowManagerService的连接过程。 我们从两方面来看Activity组件与WindowManagerService服务之间的连接。一方面是从Activity组件到WindowManagerService服务的连接,.

CallmeZhe的博客 1107

Figure 03人形机器人与Helix端到端控制系统:具身智能突破深度解析

2026年5月,Figure AI的Figure 03人形机器人在一场震撼业界的直播中完成了长达200小时的连续全自动作业,分拣近25万个包裹,零故障。这一里程碑式的成就标志着人形机器人正式从「实验室展示」迈入「规模化商用」阶段。本文深入剖析Figure 03的核心技术——Helix端到端神经网络控制系统,包括System 0/1/2三层架构、视觉运动策略、全身协同控制等关键技术,并提供完整的Python/Go代码示例,帮助开发者理解具身智能的核心原理与实现路径。关键词。

shao.bing的专栏 994

Android 窗口结构(一) 窗口层级构造

Android窗口是根据显示屏幕来管理,每个显示屏幕的窗口层级分为37层,0-36层。每层可以放置多个窗口,上层窗口覆盖下面的。要理解窗口的结构,需要学习下WindowContainer、RootWindowContainer、DisplayContent、TaskDisplayArea、Task、ActivityRecord、WindowToken、WindowStateWindowContainer等类。

q1165328963的博客 6712

模电学习笔记(十二)——跨阻放大器

模电学习笔记(十二) 跨阻放大器 跨组运算放大器是将电流信号转换成为电压信号,电流到电压增益基于反馈电阻。 设计目标: 输入 输出 带宽 电源 0A 100uA 0V 7V 20kHz 15V -15V 1.计算R1的值(增益电阻器) 2.计算C1的值满足电路带宽 ...

tang11081023的博客 2万+

在没有实验数据的情况下,如何高效快速发表高影响因子论文

最新基于Citespace、vosviewer、R语言的文献计量学可视化分析技术及全流程文献可视化SCI论文高效写作方法

glldxh的博客 371

2【Android 12】WindowContainer类

在代码搜索WindowContainer的继承关系,可以得到:除了不参与WindowContainer层级结构的WindowingLayerContainer之外,其他类都在本文有提及,用类图总结为:然后,将我们上面分析各个WindowContainer类时提供的说明图进行关联,可以得到:得到了一个简略版的WindowContainer层级结构图,这个并不真实反映手机的情况,因为这是按照我们上面的分析拼凑出的一张图,但是可以作为参考。

ukynho的博客 1万+

FoundationPose实战:从零部署到Demo运行全记录

本文详细记录了FoundationPose从零部署到Demo运行的全过程,包括Ubuntu环境配置、项目部署、依赖安装及常见问题解决方案。特别针对复现过程中的关键步骤如CUDA版本选择、Eigen3安装等提供了实用技巧,帮助开发者高效完成FoundationPose的部署与调试。

weixin_27102543的博客 269

Android13 Activity启动流程

Android 13 Activity最详启动流程

ss520k的专栏 6369

【最全】ISTQB- FL模拟题(含答案)

汇总收集的所有ISTQB基础级考题和答案

maoxuexue的博客 1万+

【银河麒麟服务器操作系统】安装英伟达4090D显卡驱动操作指南

本文详细介绍了在银河麒麟高级服务器操作系统V10SP3-2403-X86版本上安装NVIDIA RTX4090D显卡驱动的完整流程。主要内容包括:准备工作检查、开源驱动禁用、运行级别切换、依赖包安装以及交互式安装过程中的关键选项选择(32位库选Yes、X配置选No)。通过禁用nouveau驱动、重建内核引导等步骤确保驱动安装成功,最后通过nvidia-smi命令验证驱动安装情况。文档提供了操作检查表和安装流程图,帮助用户在银河麒麟系统上顺利完成显卡驱动部署。

信创运维工程师 · 银河麒麟 & 容器实战 | 金融生产环境迁移·等保加固 | 142篇原创·17万+阅读 3104

Activity.onWindowFocusChanged()调用流程

之前梳理了Activity的启动时序图,想着Activity.onWindowFocusChanged()的调用流程又是怎样的?追了下源码,梳理出来分享下。 首先看ActivityThread.handleResumeActivity() public final class ActivityThread { final void handleResumeActivity(IBinder...

weixin_34199335的博客 991

基于单片机的宠物狗智能项圈设计

GPS定位功能:利用GPS模块实时获取宠物的位置,帮助主人追踪宠物的活动轨迹。活动监测:使用加速度传感器监测宠物的活动情况,如运动、休息等,并进行分析。健康监测:集成心率传感器,实时监控宠物的心率,以确保其健康。声音识别功能:通过麦克风捕捉宠物的叫声,检测宠物的状态(如饥饿、疼痛等)。蓝牙/Wi-Fi通信:通过蓝牙或Wi-Fi模块与手机APP或云端平台进行数据交互,实时反馈宠物的状态信息。电池管理:实现低功耗设计,确保设备的续航能力。

2201_76125393的博客 2281

应用的一个场景在不断的跑自动化脚本出现无响应

日志如下: [2018-11-06 10:12:52:665]  [main][MyUncaughtExceptionHandler] [ERROR] !!! this unCaughtException lead to hid restart,which occured in thread of main java.lang.RuntimeException: Could not read i...

ni357103403的博客 708

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

文件句柄泄漏:Toast.show()引发的RuntimeException: Could not read input channel file descriptors from parce

最近友盟总是收到这样的异常: java.lang.RuntimeException: Could not read input channel file descriptors from parcel.     at android.view.InputChannel.nativeReadFromParcel(Native Method)     at android.view.InputCha...

王凯旋的博客 1846

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

java不能识别time代码,java.lang.RuntimeException的:无法读取包裹输入通道文件描述符...

I am using crashlytics to track my app's crash. There is one bug which is quite hard to figure out. The stack trace from crashlytics is as below:java.lang.RuntimeException: Could not read input chann...

weixin_30230059的博客 398

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

android 13 WMS/AMS系统开发-SplashScreen的添加与移除分析

在系统开发过程中大家要学会怎么来学习追踪代码,这一点是非常关键的,因为在庞大系统代码中,如果什么都进行正向分析,那么很有可能因为代码过于庞大,进入分支过多而导致丢失方向,失去了主要线路,陷入一种丢了西瓜捡到芝麻情况,这情况其实经常在分析系统源码时候常见,但是这其实对我们学习主流程来说是非常不利的,因为我们往往对代码执行的主流线路都还没有摸清,没有办法对流程有一个比较好的理解,而容易被执行某个小点,小部分卡住。这里我们既可以去看一下StartingSurfaceDrawer代码,然后从它的代码开始入手分析。

learnframework的博客 2460

3【Android 12】【WCT的应用】WindowOrganizerController

WindowContainerTransaction的应用,就是WindowOrganizerController读取WindowContainerTransaction中保存的信息,按照Transition、Change、HierarchyOp和BoundsChange这几部分进行分别处理。本文重点分析了Change和HierarchyOp部分,因为这两部分和分屏是重点相关的。

ukynho的博客 1万+

android 13 WMS/AMS系统开发-窗口层级相关DisplayArea,WindowContainer第二节

接着上一节课学习,我们已经清楚的知道了层级结构应该怎么看,根据dumpsys的输出可以完美复原出层级结构树,也理解了结构树对于层级结构的控制作用。但还没有从源码部分对这个结构树进行一个分析,即分析生成这个结构树的源码部分。更多内容qqun:422901085。

liaosongmao1的专栏 1016

Android R: mFocusedWindow和mFocusedApp更新流程

Android R: mFocusedWindow和mFocusedApp更新流程 有些场景下会根据mFocusedWindow和mFocusedApp做一下开发。 所以,分析mFocusedWindow和mFocusedApp更新流程还是有必要的。 1,mFocusedWindow更新流程 mFocusedWindow是WindowState类 mFocusedWindow在DisplayPolicy类中 mFocusedWindow更新的接口在: WindowManagerService.updateF

月山知了的博客 1795

Android framework 知识路线

Android 内核相关知识原理总结

记录网络缺失的知识 1239

android窗口管理剖析

一、 概述 在Android系统中,从设计的角度来看,窗口管理系统是基于C/S模式的。整个窗口系统分为服务端和客户端两大部分,客户端负责请求创建窗口和使用窗口,服务端完成窗口的维护,窗口显示等。   在Client端,并不是直接和 WindowManagerService交互,而是直接和本地对象WindowManager交互,然后由WindowManager完成和 W

专注Android开发 728

Android 12系统源码_窗口管理(四)窗口令牌WindowToken和窗口状态WindowState

通过Android12系统源码认识Android系统的窗口层级树

AfinalStone的专栏 2419

android 13 WMS/AMS系统开发-窗口层级相关DisplayArea,WindowContainer

官方注释: 给可以直接持有窗口的自己或它的孩子定义了一些公共的方法和属性,像RootWindowContainer、DisplayContent、DisplayArea、DisplayArea.Tokens、TaskDisplayArea、Task、ActivityRecord、WindowToken、WindowState都是直接或间接的继承该类。 这里面主要的重要要成员变量就是mParent和mChildren,一个代表父节点一个代表子节点,而且子节点的list顺序代表就是z轴的层级显示顺序,list尾

learnframework的博客 8807

CRASH fd leak

log如下: java.lang.RuntimeException: Adding window failed at android.view.ViewRootImpl.setView(ViewRootImpl.java:765) at android.view.WindowManagerGlobal.addView(WindowManagerGlobal.java:351) at

zwq1457的专栏 1036

ActivityRecord和windowstate建立联系(Android13 r44)

上述过程是看代码进行的猜想,代码未经验证,不保证正确。

LizZ_Ley的博客 413
上一篇: android 13 WMS/AMS系统开发-窗口层级相关SurfaceFlinger图层创建 第三节
下一篇: android 13 WMS/AMS系统开发-系统窗口添加app层demo源码分析
千里马学框架
博客等级 码龄6年 1万+粉丝 650原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

千里马学框架

帮助你了,就请我喝杯咖啡

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值