view 的 post 执行时,首先会判断view 的 mAttatchInfo 是否为空,如果不为空,则将Runnable 添加到mAttachInfo.handler 的 UI线程MessageQueue 中;如果为空,则先将Runnable 暂存在view 的类为HandlerActionQueue的mRunQueue中,在ViewRootImpl 中第一次执行performTransval时执行 dispatchAttachedToWindow ,在这个方法中执行 mRunQueue.executeActions(mAttachInfo.handler),这样就能保证Runnable 运行时获取到获取到view的宽高,因为这个时候首次performTransval已经执行完,首次测量工也会执行完,之后才会执行这个Runnable,所以这个时候能获取到宽高
相关推荐
千里马学框架1 天前
一起学 Android 14:ShellTransition 屏幕旋转过程深度剖析美狐美颜SDK开放平台1 天前
开发直播APP时如何接入视频美颜SDK?开发流程与注意事项AFinalStone1 天前
Android7 SystemUI源码解析(七)Keyguard锁屏模块深度解析致远ccc1 天前
Google Play 上架前如何测试 App?多国家 Android 环境测试ttyyttemo1 天前
Kotlin 协程中的 Job 结构化并发与取消sun0077001 天前
tbox 4g/5g切换,导致wan ip 改变,导致车机旧网络不可用。需要重启车机才行其实防守也摸鱼1 天前
内网穿透与反向代理:原理、工具与实战指南AFinalStone1 天前
Android7 SystemUI 源码解析(四)NavigationBar 导航栏与 SystemBarsJMchen1 天前
属性动画原理与高级动画实现AFinalStone1 天前
Android7 SystemUI 源码解析(二)启动流程深度解析