破坏视图(布局)

Ole*_*ndr 5 android listview garbage-collection memory-leaks view

我现在正在与内存泄漏作斗争.所以我很好奇是否有任何方法可以手动销毁视图(在活动onDestroy方法中)?由于父子引用,上下文引用,标记等,整个布局(activity contentView)有点复杂.

GC现在无法收集我的布局.问题是隐藏在视图结构中......所以找到它的唯一方法是尝试破坏叶子视图,因此在某些时候GC会收集根视图,并让我知道问题所在的位置.

我的布局结构:ViewFlipper(RelativeLayout,ListView(ViewFlipper(RelativeLayout,RelativeLayout)))

Jos*_*arl 10

您可以从ViewGroup中删除视图,但无法手动销毁视图.如果您遇到内存泄漏,通常是因为您在Views之外持有对Context的长期引用.

  1. 不要在静态字段中存储具有Context的任何内容(即Drawables - Bitmaps很好)
  2. 删除所有处理程序,清除所有计时器
  3. 不要在Threads/AsyncTasks中保留Contexts,或者确保它们是弱引用的.

View可以包含与其他视图相关的信息(即另一个视图的上下文),因为所有视图都被销毁了 - 很可能是因为Context被某些东西所持有(并且上下文对大多数事物都有处理 - 即你的所有观点)你无法释放记忆.