Simple question about the lunarlander example.
- by Smills
I am basing my game off the lunarlander example. This is the run loop I am using (very similar to what is used in lunarlander). I am getting considerable performance issues associated with my drawing, even if I draw almost nothing.
I noticed the below method. Why is the canvas being created and set to null each cycle?
@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);
}
}
}
}
Most of the times I have read anything about canvases it is more along the lines of:
mField = new Bitmap(...dimensions...);
Canvas c = new Canvas(mField);
My question is: why is Google's example done that way (null canvas), what are the benefits of this, and is there a faster way to do it?