SurfaceView奇怪的行为Android Out of Memory Error

时间:2011-03-14 14:52:30

标签: android out-of-memory surfaceview

我正在做http://www.droidnova.com/2d-tutorial-series-part-ii,772.html所做的事情,但我正在制作导致内存不足异常的SurfaceView新实例。

我在Eclipse MAT的帮助下完成了剖析,它向我展示了SurfaceView从未死亡。虽然我正在杀死正在运行onDraw的线程以及活动,但它仍然存在于内存中。 任何想法?

2 个答案:

答案 0 :(得分:1)

您应该通过在父级上调用ViewGroup#removeView(surfaceView)来从视图层次结构中删除未使用的SurfaceView。在没有其他对象引用它们之前,SurfaceView和一般对象不能被垃圾收集。

您也可以考虑重复使用SurfaceView而不是创建新的。

答案 1 :(得分:0)

我对SurfaceViews有同样的问题。我添加了View并将其删除,但垃圾收集器没有销毁它。

问题在于我覆盖了onDetachedFromWindow中的方法SurfaceView并且未调用super.onDetachedFromWindow()。这样SurfaceView注册了一个回调函数,但没有注销它。