我现在正在与内存泄漏作斗争。所以我很好奇是否有任何方法可以手动销毁 View (在 Activity onDestroy 方法中)? 整个布局(activity contentView)有点复杂,因为有父子引用、上下文引用、标签等。
GC 现在无法收集我的布局。问题深藏在 View 结构中……所以找到它的唯一方法是尝试手动销毁叶 View ,这样 GC 会在某个时刻收集 Root View 并告诉我问题出在哪里。
我的布局结构:ViewFlipper(RelativeLayout, ListView(ViewFlipper(RelativeLayout, RelativeLayout)))
最佳答案
您可以从 ViewGroup 中删除一个 View,但是无法手动销毁一个 View。如果您遇到内存泄漏,通常是因为您持有对 View 之外的上下文的长期引用。
- 不要在静态字段中存储任何具有上下文的内容(即 Drawables - 位图就可以)
- 删除所有处理程序,清除所有计时器
- 不要紧抓 Threads/AsyncTasks 中的上下文,或者确保它们是弱引用的。
View 包含与其他 View (即另一个 View 的上下文)相关的信息是没问题的,因为所有 View 都被销毁了——这很可能是因为上下文被某些东西保留(并且上下文有一个句柄大多数事情 - 即您的所有 View )您无法释放内存。
关于android - 销毁 View (布局),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5419224/