![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
WMS
文章平均质量分 84
Kbattery
这个作者很懒,什么都没留下…
展开
-
Android11 SplashScreen 的显示和退出流程
首先对surface进行赋值并清空一些变量,startingSurface是前面通过createStartingSurface得到的SplashScreenSurface对象,然后调用SplashScreenSurface的remove方法。应用的启动到显示到屏幕是需要一定的时间的,为了提升用户的体验,google加入了启动窗口,也就是SplashScreen。可以看出,SplashScreen的添加和系统窗口的添加是一样,都是调用addView去添加一个窗口。原创 2024-07-12 15:17:30 · 859 阅读 · 0 评论 -
Android11 应用启动流程
这是因为在启动新进程那条调用链上,如果上一个应用还没暂停,就不会继续往下执行,所以应用暂停完成之后,需要再次调用确保真正启动应用的地方会继续往下执行。Android 11 在AMS和Activity之间的跨进程通讯有变动,现在是采取事物的方式,scheduleTransaction用于传递事务,注意第三个参数,最终导致PauseActivityItem的execute方法被执行。也是采用事物的方式,和应用进程相互通信,最后去执行Activity 的 onCreate,onResume生命周期。原创 2024-07-10 17:50:19 · 833 阅读 · 0 评论 -
Android11 窗口动画
首先创建LocalAnimationAdapter对象,LocalAnimationAdapter对象中的mSpec成员是WindowAnimationSpec对象,WindowAnimationSpec对象中的mAnimation成员是上一步创建的Animation 对象。首先创建leash图层,然后调用LocalAnimationAdapter的startAnimation继续处理,注意传入的mInnerAnimationFinishedCallback参数,后续动画完成后会回调里面的方法。原创 2024-07-09 18:22:48 · 902 阅读 · 0 评论 -
Andorid 11 InputDispatcher FocusedApplication设置过程分析
在Input ANR中,有一类ANR打印的reason 为 “xx does not have a focused window” ,表明 输入事件 5s 内,只有FocusedApplication,而没找到focused window。本文分析下FocusedApplication的设置过程。key事件的传输过程中,去查找焦点app时,就是在该容器中查找。setFocusedApp被几处地方调用,最常见的就是打开应用时,在realStartActivityLocked方法里面调用。原创 2024-07-08 15:07:22 · 368 阅读 · 0 评论 -
Android13 WMS窗口层级树
首先也是创建临时的叶子PendingArea,leafType默认为LEAF_TYPE_TOKENS,在typeOfLayer方法中,对于IME和Application 有处理,将其leafType设为LEAF_TYPE_TASK_CONTAINERS和LEAF_TYPE_IME_CONTAINERS。注意对于这两种类型,有特殊的处理,mSkipTokens设置为了true,后续将临时的结构树转成真正的层级树的时候有用。构建层级树的核心就是该方法,来分步分析它。经过这一步,此时结构树的构造结果如下。原创 2024-06-23 17:58:08 · 992 阅读 · 0 评论 -
Android11 以Window的视角来看FallbackHome的启动
所以经过以上的调用流程,创建了一个home Task,其实home Task就是ActivityStack对象,然后挂载到DefaultTaskDisplayArea下。注释1处,parent为前面创建的FallbackHome Task,mStartActivity为前面创建的ActivityRecord,将ActivityRecord设置为FallbackHome Task的孩子。注释1处创建FallbackHome Task,mTargetStack为前面创建的home Task。原创 2024-06-17 13:55:08 · 815 阅读 · 1 评论