
小李飞刀
士不可不弘毅,任重而道远
经过前面的五篇WMS文章,我们基本把整个WMS的流程走了一遍。在上一篇的文章里面,我们说了这篇文章会分析一下关于窗口的测量和布局,我们知道view有测量,布局,绘制三个大步骤,同样窗口也有测量和布局,测量就是计算每个窗口的大小,而布局是在测量的基础上,不同一个屏幕的窗口进行有效的排列,比如最上面是状
然后如果这个窗口是可以接受按键事件的话,会调用updateFocusedWindowLocked方法来更新下当前的焦点窗口,这个方法我们看下: // 更新最新的焦点窗口,处理窗口顺序布局等,以及输入法对新焦点窗口的影响,移除不同uid的toast的窗口等 boolean updateFo
在前一篇文章中我们分析到Activity启动过程中添加窗口,最后执行到ViewRootImpl类的setView方法,这篇文章我们接着这个方法继续往下进行分析。这个方法非常的长,我们分几部分来看:ViewRootImpl的setView方法 // 参数一 view, 要添加的view /
在WMS系列的第二篇文章中,我们分析到了AMS在启动一个Activity前,如果是一个新的任务栈会有一个启动窗口显示在真正的Activity完成启动前,在启动窗口的流程处理完后,经过一些的AMS流程,最终会走到客户端ActivityThread的handleLaunchActivity方法,这之间的
在第一篇WMS系列文章中,我们大致介绍了一下和WMS中有关系的一系列类和数据结构,从这篇文章开始我们就开始通过分析一下Activity在启动过程中WMS扮演的角色,看看第一篇文章中介绍的这些类到底有些什么作用,同时也可以结合AMS的启动过程,更好的从整体上了解Activity,之前我们有分析过Act
从这篇文章开始,我们来看下WindowManagerService相关的内容。WMS作为android非常重要的一个模块,我们在平时的开发中其实一直在接触着。从名字上看,翻译成中文叫做窗口管理,但是如果我们去看他的源码,他涉及到的模块远远不止"窗口管理“这么简单,如果我们看过AMS源码的话
之前我们已经分析了Handler的创建和消息的发送流程,基本上已经了解了Handler的运行的原理,整个Handler分为java层和native层,我们通常开发app都是通过java层给Handler发送消息,java层Handler最终的消息获取和分发都是在java层处理的,native主要作为
在Handler源码解析(一)中,我们分析了一个Hander创建的整个过程,通过在java层和native分别创建Looper和MessageQueue,利用linux的epoll机制我们阻塞和唤醒消息队列,使Handler具体的消息发送的能力。这篇文章我们就通过分析消息发送和接受的具体过程,来看看