view 的 post 执行时,首先会判断view 的 mAttatchInfo 是否为空,如果不为空,则将Runnable 添加到mAttachInfo.handler 的 UI线程MessageQueue 中;如果为空,则先将Runnable 暂存在view 的类为HandlerActionQueue的mRunQueue中,在ViewRootImpl 中第一次执行performTransval时执行 dispatchAttachedToWindow ,在这个方法中执行 mRunQueue.executeActions(mAttachInfo.handler),这样就能保证Runnable 运行时获取到获取到view的宽高,因为这个时候首次performTransval已经执行完,首次测量工也会执行完,之后才会执行这个Runnable,所以这个时候能获取到宽高
相关推荐
拾光Ծ37 分钟前
【MySQL】对表数据的操作:增删查改(CRUD)一笑的小酒馆10 小时前
Android中的tcp通信默阳123414 小时前
2026年Android中高级面试题专栏(Android进阶篇)古法安卓14 小时前
Android-日志系统源码解析恋猫de小郭15 小时前
Android 17 + OkHttp 5.5.0 ,全新 ECH 下你的 HTTPS 域名可以请求时被安全隐藏小强闯江湖15 小时前
不只是让 AI 写代码:ViewCompose 把 Android UI 做成了可编译、可渲染的闭环hunterandroid17 小时前
StateFlow 与 SharedFlow 的边界:状态与事件的正确建模YF021117 小时前
Android遥控器对频详解码农coding18 小时前
android12 WindowManagerService窗口的布局过程杉氧20 小时前
状态管理变迁史:为什么我们放弃了 Redux 选择 Zustand?