view 的 post 执行时,首先会判断view 的 mAttatchInfo 是否为空,如果不为空,则将Runnable 添加到mAttachInfo.handler 的 UI线程MessageQueue 中;如果为空,则先将Runnable 暂存在view 的类为HandlerActionQueue的mRunQueue中,在ViewRootImpl 中第一次执行performTransval时执行 dispatchAttachedToWindow ,在这个方法中执行 mRunQueue.executeActions(mAttachInfo.handler),这样就能保证Runnable 运行时获取到获取到view的宽高,因为这个时候首次performTransval已经执行完,首次测量工也会执行完,之后才会执行这个Runnable,所以这个时候能获取到宽高
相关推荐
Coffeeee43 分钟前
闲聊几句,Android老哥们,你们多久没做技改需求了萝卜er2 小时前
Fragment 生命周期与状态恢复-《Android深水区(四)》萝卜er2 小时前
Intent 显式、隐式与 PendingIntent-《Android深水区(五)》Kapaseker4 小时前
一文吃透 Kotlin 集合操作符三少爷的鞋5 小时前
Main-safe:现代Android 架构真正的分水岭沐怡旸13 小时前
深入解析 Android Performance Analyzer (APA) 底层架构与技术原理李斯维21 小时前
从历史的角度看 Android 软件架构plainGeekDev1 天前
Activity 间传值 → Navigation 参数用户41659673693551 天前
Android WebView 加载 file:// 离线页面调试教程plainGeekDev1 天前
onActivityResult → ActivityResult API