我正在做http://www.droidnova.com/2d-tutorial-series-part-ii,772.html所做的事情,但我正在制作导致内存不足异常的SurfaceView新实例。
我在Eclipse MAT的帮助下完成了剖析,它向我展示了SurfaceView从未死亡。虽然我正在杀死正在运行onDraw的线程以及活动,但它仍然存在于内存中。 任何想法?
答案 0 :(得分:1)
您应该通过在父级上调用ViewGroup#removeView(surfaceView)
来从视图层次结构中删除未使用的SurfaceView。在没有其他对象引用它们之前,SurfaceView
和一般对象不能被垃圾收集。
您也可以考虑重复使用SurfaceView而不是创建新的。
答案 1 :(得分:0)
我对SurfaceViews有同样的问题。我添加了View
并将其删除,但垃圾收集器没有销毁它。
问题在于我覆盖了onDetachedFromWindow
中的方法SurfaceView
并且未调用super.onDetachedFromWindow()
。这样SurfaceView
注册了一个回调函数,但没有注销它。