игра для Android - истекло время ожидания lock_layer - PullRequest
0 голосов
/ 09 июня 2011

Я занимаюсь разработкой (прокрутки) игры и получаю странные сообщения в LogCat:

  • lock_layer () истекло время, но, похоже, его не нужно было блокировать, и мы восстановились (..)
  • истекло время ожидания lock_layer (не привязан ли процессор?) ...
  • executeScheduledBrodcasts () пропущено, конфликт на клиенте.Мы попробуем еще раз позже.

похоже, что рендеринг занимает слишком много времени и вызывает предупреждение (я рисую ~ 50 изображений в каждом кадре), но это ошибка эмулятора?Когда я тестирую его на устройстве (sony ericsson xperia x8), работающем 1.6, я не вижу никаких задержек или падений производительности (я получаю ~ 60 кадров в секунду).Я получаю это предупреждение только в Android 1.6.

Должен ли я его игнорировать?Может ли это привести к падению игры?Я делаю что-то ужасно неправильно или это ошибка?

Выполнить код:

  while(running) {
    try {
       c = holder.lockCanvas(null);
       synchronized(holder) {
           // getElements - returns a Vector of elements to be drawn relative to camera
           elements = collection.getElements(cameraX,cameraY,cameraWidth,cameraHeight);
           for(int i =0 ; i < elements.size(); i++) {
              // draw the element according to camera
              c.drawBitmap(image,elements.get(i).x,elements.get(i).y);
           }
       }    

    } finally {
       holder.unloackCanvasAndPost(c);
    }

}

Спасибо за ответ.

С уважением, J.

1 Ответ

0 голосов
/ 10 июня 2011

Ах, я знаю, почему это происходит. Очевидно, это происходит, когда два разных потока пытаются получить доступ к холсту. Просто прочитайте эту ветку , чтобы узнать больше.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...