在2D教程的在线教程或Android SDK示例中,游戏线程的run()方法中通常有一个绘图函数,它负责在画布上绘图。例如,在经典的Lunar Lander代码中,我们在类LunarThread
中有以下代码:
@Override
public void run() {
while (mRun) {
Canvas c = null;
try {
c = mSurfaceHolder.lockCanvas(null);
synchronized (mSurfaceHolder) {
if (mMode == STATE_RUNNING) updatePhysics();
doDraw(c);
}
} finally {
// ...
}
}
}
private void doDraw(Canvas canvas) {
canvas.drawBitmap(mBackgroundImage, 0, 0, null);
// ...
}
然而,Android开发指南非常清楚地表明:
不要从UI线程外部访问Android UI工具包。
我有两个问题。