刷新前查看延迟

时间:2019-05-03 14:51:43

标签: android view

我正在开发Connect 5游戏。我将板作为自定义视图。当玩家与引擎对战时,棋盘会显示该动作,直到引擎作出其动作为止。因此,发动机运动相对较快。没什么大不了,但这仍然很明显。

在做出玩家移动之后,我调用invalidate(),然后调用使引擎在不同线程上移动的方法(AsyncTask)。我的印象是,在调用invalidate()之后,视图将刷新,然后将调用使引擎移动的方法。

在此先感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

您要引入竞争条件,invalidate()在视图层次结构中“向上”传播,以通知您的布局要在下一个绘制周期中重新绘制。不能保证立即触发重绘。

invalidate()调用之前还是之后启动引擎都无关紧要,无论哪种情况都无法确定它是在绘制循环之前还是之后完成的。

如果您想在AsyncTask完成后立即刷新布局,则应在结果回调期间调用invalidate()