小李飞刀

小李飞刀

士不可不弘毅,任重而道远

WMS(六)之窗口的测量和布局

WMS(六)之窗口的测量和布局

经过前面的五篇WMS文章,我们基本把整个WMS的流程走了一遍。在上一篇的文章里面,我们说了这篇文章会分析一下关于窗口的测量和布局,我们知道view有测量,布局,绘制三个大步骤,同样窗口也有测量和布局,测量就是计算每个窗口的大小,而布局是在测量的基础上,不同一个屏幕的窗口进行有效的排列,比如最上面是状

2023-12-16
600 0
WMS(五)之Acivity启动流程四

WMS(五)之Acivity启动流程四

然后如果这个窗口是可以接受按键事件的话,会调用updateFocusedWindowLocked方法来更新下当前的焦点窗口,这个方法我们看下: // 更新最新的焦点窗口,处理窗口顺序布局等,以及输入法对新焦点窗口的影响,移除不同uid的toast的窗口等 boolean updateFo

2023-12-11
655 0
WMS(四)之Acivity启动流程三

WMS(四)之Acivity启动流程三

在前一篇文章中我们分析到Activity启动过程中添加窗口,最后执行到ViewRootImpl类的setView方法,这篇文章我们接着这个方法继续往下进行分析。这个方法非常的长,我们分几部分来看:ViewRootImpl的setView方法 // 参数一 view, 要添加的view /

2023-12-05
693 0
WMS(三)之Acivity启动流程二

WMS(三)之Acivity启动流程二

在WMS系列的第二篇文章中,我们分析到了AMS在启动一个Activity前,如果是一个新的任务栈会有一个启动窗口显示在真正的Activity完成启动前,在启动窗口的流程处理完后,经过一些的AMS流程,最终会走到客户端ActivityThread的handleLaunchActivity方法,这之间的

2023-12-01
629 0
WMS(二)之Acivity启动流程一

WMS(二)之Acivity启动流程一

在第一篇WMS系列文章中,我们大致介绍了一下和WMS中有关系的一系列类和数据结构,从这篇文章开始我们就开始通过分析一下Activity在启动过程中WMS扮演的角色,看看第一篇文章中介绍的这些类到底有些什么作用,同时也可以结合AMS的启动过程,更好的从整体上了解Activity,之前我们有分析过Act

2023-11-28
448 0
WMS(一)启动与主要概念

WMS(一)启动与主要概念

从这篇文章开始,我们来看下WindowManagerService相关的内容。WMS作为android非常重要的一个模块,我们在平时的开发中其实一直在接触着。从名字上看,翻译成中文叫做窗口管理,但是如果我们去看他的源码,他涉及到的模块远远不止"窗口管理“这么简单,如果我们看过AMS源码的话

2023-11-21
489 0
Handler源码解析(三)

Handler源码解析(三)

之前我们已经分析了Handler的创建和消息的发送流程,基本上已经了解了Handler的运行的原理,整个Handler分为java层和native层,我们通常开发app都是通过java层给Handler发送消息,java层Handler最终的消息获取和分发都是在java层处理的,native主要作为

2023-11-15
619 0
Handler源码解析(二)

Handler源码解析(二)

在Handler源码解析(一)中,我们分析了一个Hander创建的整个过程,通过在java层和native分别创建Looper和MessageQueue,利用linux的epoll机制我们阻塞和唤醒消息队列,使Handler具体的消息发送的能力。这篇文章我们就通过分析消息发送和接受的具体过程,来看看

2023-11-10
597 0
Handler源码解析(一)

Handler源码解析(一)

从这篇文章开始,准备分析一下Handler的源码。Handler对于Android的开发者来说是比较熟悉的,我们在开发的过程中通过Handler可以十分方便地在不同的线程间进行通讯,Handler内部会维护有一个消息队列,正常情况下我们发送给Handler的消息都是会按照一个时间的顺序来执行,所以对

2023-11-06
316 0