View.removeAllViews()是否会释放内存?

use*_*239 12 android

我在代码中遇到了OutOfMemory异常,因此我正在查看代码.

我有一个问题,View.removeAllViews()是否释放以前添加到父视图中的子视图使用的内存?

谢谢.

Cor*_*ese 7

View.removeAllViews()可能会释放视图,并会安排它们进行垃圾收集(可能会在以后发生),但是你可能仍然有问题,因为XML中的@drawables或带有'getDrawable()的代码中的@drawables仍然会消耗内存.

我自己一直在努力解决OutOfMemory错误,并发现最大的问题不是Layout XML或View对象,而是它们加载的Drawables和Resources(或者我加载它们以附加到它们.)

关于这方面的精彩演讲可以在YouTube上从Google IO 2011中找到:

http://www.youtube.com/watch?v=_CruQY55HOk

本演讲介绍如何使用Eclipse MAT(内存分析工具)对OutOfMemory异常进行故障排除.我建议你,因为你提到你正在审查代码,开始寻找OutOfMemory错误的最佳位置是......"什么占据了我的记忆?"


dav*_*vid 6

除非您的代码具有ViewGroup的子视图的引用,否则所有ViewGroup的子视图都应该是"垃圾回收".