错误如下:
11-24 10:14:32.046: ERROR/SurfaceComposerClient(56): openGlobalTransaction() called more than once. skipping.
11-24 10:14:32.096: ERROR/SurfaceComposerClient(56): Not in transaction (client=0x19bf80, SurfaceID=0, mTransactionOpen=0
11-24 10:14:32.246: WARN/WindowManager(56): Error creating surface in 480
11-24 10:14:32.246: WARN/WindowManager(56): java.lang.IllegalArgumentException
11-24 10:14:32.246: WARN/WindowManager(56):     at android.view.Surface.setPosition(Native Method)
11-24 10:14:32.246: WARN/WindowManager(56):     at com.android.server.WindowManagerService$WindowState.createSurfaceLocked(WindowManagerService.java:5860)
11-24 10:14:32.246: WARN/WindowManager(56):     at com.android.server.WindowManagerService.relayoutWindow(WindowManagerService.java:1595)
11-24 10:14:32.246: WARN/WindowManager(56):     at com.android.server.WindowManagerService$Session.relayout(WindowManagerService.java:5278)
11-24 10:14:32.246: WARN/WindowManager(56):     at android.view.ViewRoot.performTraversals(ViewRoot.java:795)
11-24 10:14:32.246: WARN/WindowManager(56):     at android.view.ViewRoot.handleMessage(ViewRoot.java:1482)
11-24 10:14:32.246: WARN/WindowManager(56):     at android.os.Handler.dispatchMessage(Handler.java:99)
11-24 10:14:32.246: WARN/WindowManager(56):     at android.os.Looper.loop(Looper.java:123)
11-24 10:14:32.246: WARN/WindowManager(56):     at com.android.server.WindowManagerService$WMThread.run(WindowManagerService.java:440)
11-24 10:14:32.246: INFO/WindowManager(56): Out of memory for surface!  Looking for leaks...
11-24 10:14:32.246: WARN/WindowManager(56): No leaked surfaces; killing applicatons!

解决方案 »

  1.   

    11-24 10:14:32.246: INFO/WindowManager(56): Out of memory for surface!  Looking for leaks... 
      

  2.   

    现象是surfaceflinger报错了,内存不足~~不能为应用程序再创建surface了 ;log应该贴全一点~~是不是你使用了surfaceview画图了?没有正确使用surface导致他内存泄露了估计,或者你开了太多surface
      

  3.   

    播放视频中使用了surfaceView
    当播放完一个视频,退出该页面再进入后会概率出现。
    该视频播放界面是SingleInstance。
    按照surfaceView来说每次离开这个页面都会被destory的
      

  4.   

    如果只是一个surface不会导致系统缺少内存的,一个应用程序只会分配8m的surface ;不太了解media player的API,需要使用surfaceview来显示么?surfaceview我觉得主要用在画图上~
    使用surfaceview不会对播放起到加速的目的,加速是通过opencore来实现的~~我觉得你可以跟下每次播放一个片子以后看一下系统的memory情况,通过ADB SHELL然后使用这个命令cat /proc/meminfo去看下memory的情况 ;肯定是代码在使用surface上有了问题导致内存没有释放,你好好跟一下代码~~
      

  5.   

    我觉得主要错误在这几句:
    11-24 10:14:32.046: ERROR/SurfaceComposerClient(56): openGlobalTransaction() called more than once. skipping. 
    11-24 10:14:32.096: ERROR/SurfaceComposerClient(56): Not in transaction (client=0x19bf80, SurfaceID=0, mTransactionOpen=0 
    11-24 10:14:32.246: WARN/WindowManager(56): Error creating surface in 480 
    11-24 10:14:32.246: WARN/WindowManager(56): java.lang.IllegalArgumentException 
    11-24 10:14:32.246: WARN/WindowManager(56):    at android.view.Surface.setPosition(Native Method) setPosition方法必须在transaction内,但不知为何会导致openGlobalTransaction() called more than once
      

  6.   

    Now i don't have time to help you for debuging ,you can read a article about the call sequence of surfaceview in my blog. If you understand the call sequence ,then maybe you can fit the bug ~http://hi.csdn.net/link.php?url=http://blog.csdn.net%2Fyili_xieThe article is very long, you just only read the class graphic will be ok ~~
      

  7.   

    All operation on window must be in the transaction , not just only the setPosition() ; 
      

  8.   

    你在surfaceDestroy之后对media player做了什么操作吗? 有没有把media player关闭掉  等重新进入该页面后重新初始化试试?
      

  9.   

    11-24 10:14:32.046: ERROR/SurfaceComposerClient(56): openGlobalTransaction() called more than once. skipping错误在这里,去查查你的逻辑,Surface.openTransaction()肯定调过不止一次。
      

  10.   

    surfaceview ,视频太大了吧