2

我正在使用 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% 的时间。

有任何想法吗?谢谢 :)

4

1 回答 1

0

这可能会帮助你

           if your android:targetSdkVersion="12" or less
     android:configChanges="orientation|keyboardHidden">

      if your  android:targetSdkVersion="13" or more
  android:configChanges="orientation|keyboardHidden|screenSize">
于 2012-09-10T16:57:46.043 回答