我现在正在与内存泄漏作斗争。所以我很好奇是否有任何方法可以手动销毁视图(在活动onDestroy方法中)? 由于父子引用,上下文引用,标记等,整个布局(activity contentView)有点复杂。
GC现在无法收集我的布局。问题是隐藏在视图结构中...所以找到它的唯一方法是尝试破坏叶子视图,所以在某些时候GC会收集根视图并让我知道问题所在的位置。
我的布局结构:ViewFlipper(RelativeLayout,ListView(ViewFlipper(RelativeLayout,RelativeLayout)))
答案 0 :(得分:10)
您可以从ViewGroup中删除视图,但无法手动销毁视图。如果您遇到内存泄漏,通常是因为您在视图之外持有对Context的长期引用。
View可以包含与其他视图相关的信息(即另一个视图的上下文),因为所有视图都被销毁了 - 很可能是因为Context被某些东西所持有(并且上下文有句柄)你无法释放记忆的大多数东西 - 即你的所有观点。
答案 1 :(得分:1)
您的视图中是否有可能需要停止的处理程序/消息?
我遇到了类似的问题,我定期在视图中发送消息以获取动画。我需要停止/忽略消息,并在触发活动OnDestroy()后停止排队。