Я впервые использую это, так что я не уверен, является ли это ошибкой в моем коде, или я пытаюсь сделать что-то, что не разрешено.
В настоящее время у меня есть 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 () не вызывается.Есть ли какие-либо флаги или инициализация, которые мне нужно сделать, чтобы заставить это работать?
Любые советы или теории приветствуются.Спасибо!