我正在开发Connect 5游戏。我将板作为自定义视图。当玩家与引擎对战时,棋盘会显示该动作,直到引擎作出其动作为止。因此,发动机运动相对较快。没什么大不了,但这仍然很明显。
在做出玩家移动之后,我调用invalidate(),然后调用使引擎在不同线程上移动的方法(AsyncTask)。我的印象是,在调用invalidate()之后,视图将刷新,然后将调用使引擎移动的方法。
在此先感谢您的帮助。
答案 0 :(得分:0)
您要引入竞争条件,invalidate()
在视图层次结构中“向上”传播,以通知您的布局要在下一个绘制周期中重新绘制。不能保证立即触发重绘。
在invalidate()
调用之前还是之后启动引擎都无关紧要,无论哪种情况都无法确定它是在绘制循环之前还是之后完成的。
如果您想在AsyncTask
完成后立即刷新布局,则应在结果回调期间调用invalidate()
。