这是我第一次使用它,所以我不确定是我的代码有bug还是我正在尝试做一些不允许的事情。
目前,我有一个DrawThread()函数,在其run方法中执行以下操作。
try {
c = m_surfaceHolder.lockCanvas(null);
synchronized (m_surfaceHolder) {
m_view.onDraw(c);
}
}
finally {
if (c != null) {
m_surfaceHolder.unlockCanvasAndPost(c);
}
}
在这个绘制线程(非UI线程)中,我的onDraw()方法将画布传递给另一个名为drawScoreboard()的方法。我希望这个方法在显示记分牌的每一行之间有一个短暂的延迟,所以我添加了postInvalidateDelay(x),希望它会再次触发onDraw()。
/**
* A helper function which draws the scoreboard.
*/
private void drawScoreboard(Canvas canvas) {
long delay = m_drawScoreboard.draw(canvas, m_paint);
if (delay > 0) {
this.postInvalidateDelayed(delay);
}
}
代码执行正确,postInvalidateDelayed() 被调用了,但我不知道为什么 onDraw() 没有被调用。是否需要设置任何标志或初始化才能使其正常工作?
欢迎提供任何建议或理论。 谢谢!