view 的 post 执行时,首先会判断view 的 mAttatchInfo 是否为空,如果不为空,则将Runnable 添加到mAttachInfo.handler 的 UI线程MessageQueue 中;如果为空,则先将Runnable 暂存在view 的类为HandlerActionQueue的mRunQueue中,在ViewRootImpl 中第一次执行performTransval时执行 dispatchAttachedToWindow ,在这个方法中执行 mRunQueue.executeActions(mAttachInfo.handler),这样就能保证Runnable 运行时获取到获取到view的宽高,因为这个时候首次performTransval已经执行完,首次测量工也会执行完,之后才会执行这个Runnable,所以这个时候能获取到宽高
相关推荐
xvch2 小时前
Kotlin 2.1.0 入门教程(二十五)类型擦除simplepeng10 小时前
我的天,我真是和androidx的字体加载杠上了小猫猫猫◍˃ᵕ˂◍12 小时前
备忘录模式:快速恢复原始数据CYRUS_STUDIO14 小时前
使用 AndroidNativeEmu 调用 JNI 函数梦否14 小时前
【Android】类加载器&热修复-随记徒步青云14 小时前
Java内存模型今阳14 小时前
鸿蒙开发笔记-6-装饰器之@Require装饰器,@Reusable装饰器-优势在我19 小时前
Android TabLayout 实现随意控制item之间的间距hedalei19 小时前
android13修改系统Launcher不跟随重力感应旋转Indoraptor20 小时前
Android Fence 同步框架