【问题标题】:How to fix memory leak in SurfaceView如何修复 SurfaceView 中的内存泄漏
【发布时间】:2013-08-22 01:27:20
【问题描述】:

我在surfaceview中遇到了内存泄漏问题。

我定义了一个从surfaceview扩展的自定义视图MyView。

int Layout file 
<com.andoird.example.MyView
....
....
/>

并在 onCreate() 中设置内容视图; 完成活动后。 我得到下面的日志; 它显示 Surface 视图中存在内存泄漏。

我希望有人可以帮助我解决这个问题。谢谢!

使用 Android 4.2。

日志 1:

08-16 16:29:23.751 E/StrictMode(23220): A resource was acquired at attached stack trace but never released. See java.io.Closeable for information on avoiding resource leaks.
08-16 16:29:23.751 E/StrictMode(23220): java.lang.Throwable: Explicit termination method 'release' not called
08-16 16:29:23.751 E/StrictMode(23220):     at dalvik.system.CloseGuard.open(CloseGuard.java:184)
08-16 16:29:23.751 E/StrictMode(23220):     at android.view.Surface.<init>(Surface.java:293)
08-16 16:29:23.751 E/StrictMode(23220):     at android.view.SurfaceView.<init>(SurfaceView.java:101)

日志 2

08-16 16:29:23.751 E/StrictMode(23220): A resource was acquired at attached stack trace but never released. See java.io.Closeable for information on avoiding resource leaks.
08-16 16:29:23.751 E/StrictMode(23220): java.lang.Throwable: Explicit termination method 'release' not called
08-16 16:29:23.751 E/StrictMode(23220):     at dalvik.system.CloseGuard.open(CloseGuard.java:184)
08-16 16:29:23.751 E/StrictMode(23220):     at android.view.Surface.<init>(Surface.java:293)
08-16 16:29:23.751 E/StrictMode(23220):     at android.view.SurfaceView.<init>(SurfaceView.java:102)

【问题讨论】:

    标签: android memory-leaks surfaceview


    【解决方案1】:

    我找到了解决此问题的方法。 您应该简单地调用:

    getHolder().getSurface().release();
    

    在 Activity 的 onDestroy() 控制中

    类似这样的:

    class MyView {
    
        ...
    
        public void release() {
            getHolder().getSurface().release();
        }
    
        ...
    }
    
    class MyActivity extends Activity {
    
        ...
    
        @Override
        public void onDestroy() {
             super.onDestroy();
             mMyView.release();
        }
    
        ...
    
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-01-12
      • 2018-05-09
      • 2018-07-12
      • 2012-09-14
      • 2020-05-24
      相关资源
      最近更新 更多