Я прочитал довольно много учебных пособий по программированию игр на Android, и все они в основном предоставляют то же решение, что и рисование игры, в котором вращается выделенная нить, как это:
public void run() {
while(true) {
if(!surfaceHolder.getSurface().isValid()) continue;
Canvas canvas = surfaceHolder.lockCanvas();
drawGame(canvas); /* do actual drawing here */
surfaceHolder.unlockCanvasAndPost(canvas);
}
}
теперь мне интересно, разве это не расточительно?Предположим, у меня есть игра с очень простой графикой, поэтому фактическое время в drawGame мало;затем я буду рисовать одни и те же вещи, крадя процессор из других потоков;возможность может быть пропустить рисунок и немного поспать, если состояние игры не изменилось, что я мог бы проверить, имея поток обновления состояния, поддерживающий подходящий флаг состояния.Но, возможно, есть и другие варианты.Например, нельзя ли синхронизировать с рендерингом, чтобы я не слишком часто публиковал обновления?Или я что-то упускаю, и это именно то, что делает lockCanvas, то есть блокирует и не сжигает процессор до нужного времени?
Заранее спасибо
L.