我正在使用 android & canvas,除了显示分辨率发生变化(即旋转设备)应用程序强制关闭和 log cat 显示时,我的代码可以完美地工作:
致命异常:Thread-367
java.lang.NullPointerException
在 ...doDraw()
它将错误链接到的行包含:
canvas.drawARGB(255, 0, 0, 0);
但我相信,只要它试图绘制一些东西并显示我试图绘制的第一件东西,这并不重要。
这是我的运行循环:
@Override
public void run() {
while (mPlaying) {
Canvas c = null;
try {
c = mSurfaceHolder.lockCanvas(null);
synchronized (mSurfaceHolder) {
if (mPlaying == true) updatePosition();
doDraw(c);
}
} finally {
if (c != null) {
mSurfaceHolder.unlockCanvasAndPost(c);
}
}
}
}
我直接取自 LunarLander 示例。现在,并不是每次我旋转时都会发生崩溃,而是大约 75% 的时间。
有任何想法吗?谢谢 :)