小编Sim*_*Lee的帖子

编舞如何工作

我刚刚研究了Android框架的代码(v4.1).

我知道invalidate()现在触发的UI消息直接发布到Choreographer而不是UI messageQueue,并且在下一个VSYNC信号到来之前不会执行这些消息.

在执行此post操作之前,ViewRootImpl调用Looper postSyncBarrier()一次以阻止UI MessageQueue,这意味着稍后发送到messagesQueue的消息将不会被执行,直到该块被删除,这在函数之前发生performTraversals().

基于以上理解,

如果invalidate()在其中的某个地方performTraversals()(例如onDraw()任何视图实例)中调用了另一个,则永远会阻止UI messageQueue?

从实际观察中,我知道这种情况从未发生过.
那么,我哪里错了?

android android-framework

5
推荐指数
1
解决办法
455
查看次数

标签 统计

android ×1

android-framework ×1