2016-06-06 3 views
0

Я получаю это сообщение в окне LogCat:Таинственный сообщение LogCat используя SurfaceView

W/Поверхность: Внимание: поверхности в mNativeObject (0xffffffffaebfa400) = mLockedObject (0xffffffffaeca2c00)

Что это значит?

UPDATE Тхи код, который я использовать для блокировки/разблокировки на холст

public void run() { 
    long startTime; 
    long drawTime; 
    //milliseconds per frame 
    long mspf = 1000/FRAMES_PER_SECOND; 
    while (mRun) { 
     if (currentState != STATE_PAUSE) { 
      startTime = System.currentTimeMillis(); 
      //draw to our canvas 
      Canvas c = null; 
      try { 
       c = mSurfaceHolder.lockCanvas(null); 
       if (c != null) { 
        drawAll(c); 
       } 
      } finally { 
       if (c != null) { 
        mSurfaceHolder.unlockCanvasAndPost(c); 
       } 
      } 
      //make the frame rate consistent 
      drawTime = (System.currentTimeMillis() - startTime); 
      if (drawTime <= mspf) { 
       try { 
        sleep(mspf - drawTime); 
       } catch (InterruptedException e) { 
        e.printStackTrace(); 
       } 
      } 
     } else { 
      //have the thread wait to start again so we aren't doing busy work 
      try { 
       synchronized (mWaitLock) { 
        mWaitLock.wait(); 
       } 
      } catch (InterruptedException e) { 
       e.printStackTrace(); 
      } 
     } 
    } 
} 

ответ

1

Вы можете увидеть код, который генерирует сообщение here.

Это означает, что нативный указатель поверхности изменился между lockCanvas() и unlockCanvasAndPost(). Сообщение было добавлено в this change, как часть фиксации this bug. В отчете об ошибке есть немного информации; это может дать вам некоторое представление о том, что именно в вашем приложении вызывает ситуацию.

IIRC он должен быть безвредным - код просто предупреждает вас, что он обнаружил, что раньше было фатальным.

Смежные вопросы