私はAndroidとCanvasを使用していますが、ディスプレイの解像度が変更された場合(つまり、デバイスを回転させた場合)を除いて、コードは問題なく機能します。アプリは強制終了し、キャットショーをログに記録します。
致命的な例外:スレッド-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%の確率で発生します。
何か案は?ありがとう :)