安卓游戏 - lock_layer超时

时间:2011-06-09 18:57:27

标签: android canvas

我正在开发一个(滚动)游戏,我在LogCat中收到了奇怪的消息:

  • lock_layer()超时,但似乎不需要锁定,我们恢复了(..)
  • lock_layer超时(是CPU固定?)......
  • executeScheduledBrodcasts()跳过,在客户端上发生争用。我们稍后再试。

看起来渲染需要太长时间并导致警告(我每帧绘制约50张图像),但这是模拟器故障吗?当我在设备上测试它(sony ericsson xperia x8),运行1.6时,我看不到任何延迟或任何性能下降(我得到~60fps)。 我只在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 :(得分:0)

啊,我知道为什么会这样。显然,当两个不同的线程尝试访问画布时会发生这种情况。只需read this thread了解更多信息。