view 的 post 执行时,首先会判断view 的 mAttatchInfo 是否为空,如果不为空,则将Runnable 添加到mAttachInfo.handler 的 UI线程MessageQueue 中;如果为空,则先将Runnable 暂存在view 的类为HandlerActionQueue的mRunQueue中,在ViewRootImpl 中第一次执行performTransval时执行 dispatchAttachedToWindow ,在这个方法中执行 mRunQueue.executeActions(mAttachInfo.handler),这样就能保证Runnable 运行时获取到获取到view的宽高,因为这个时候首次performTransval已经执行完,首次测量工也会执行完,之后才会执行这个Runnable,所以这个时候能获取到宽高
相关推荐
张风捷特烈5 小时前
Flutter 伪3D绘制#03 | 轴测投影原理分析omegayy8 小时前
Unity 2022.3.x部分Android设备播放视频黑屏问题mingqian_chu8 小时前
ubuntu中使用安卓模拟器自动花钱机8 小时前
Kotlin问题汇总行墨11 小时前
Kotlin 主构造函数前行的小黑炭11 小时前
Android从传统的XML转到Compose的变化:mutableStateOf、MutableStateFlow;有的使用by有的使用by remember_一条咸鱼_11 小时前
Android Compose 框架尺寸与密度深入剖析(五十五)在狂风暴雨中奔跑11 小时前
使用AI开发Android界面行墨11 小时前
Kotlin 定义类与field关键信徒_12 小时前
Mysql 在什么样的情况下会产生死锁?