Я основываю свою игру на примере с лунландцами.Это цикл запуска, который я использую (очень похоже на то, что используется в lunarlander).У меня возникают значительные проблемы с производительностью, связанные с моим рисованием, даже если я рисую почти ничего.
Я заметил следующий метод.Почему холст создается и устанавливается равным нулю в каждом цикле?
@Override
public void run()
{
while (mRun)
{
Canvas c = null;
try
{
c = mSurfaceHolder.lockCanvas();//null
synchronized (mSurfaceHolder)
{
updatePhysics();
doDraw(c);
}
} finally
{
// do this in a finally so that if an exception is thrown
// during the above, we don't leave the Surface in an
// inconsistent state
if (c != null)
{
mSurfaceHolder.unlockCanvasAndPost(c);
}
}
}
}
В большинстве случаев, когда я читал что-нибудь о холстах, это больше похоже на:
mField = new Bitmap(...dimensions...);
Canvas c = new Canvas(mField);
Мойвопрос в том, почему пример Google сделан таким образом (null canvas), в чем его преимущества, и есть ли более быстрый способ сделать это?