2013-11-21 19 views
1
public void onDestroy() { 
} 
protected void finalize() { 
} 

确定finalize不总是被调用的片段吗?片段敲定不叫

那么片段实例中的字段呢?我必须在onDestroy中将它们设置为null,以便它们被回收?

+0

绝大多数情况下,不要担心Android上的'finalize()',特别是主要的Android组件(Activity,Fragment,Service等)。操作系统在清理资源和垃圾收集等方面非常高效。这些东西都是在操作系统确定不再需要特定对象时在幕后完成的。 – Squonk

+0

虽然我正尝试在我的应用程序中诊断内存峰值。所以......我需要知道什么时候对象被回收。 –

+0

我会有最好的方法来使用各种Android SDK工具。 – Squonk

回答

1

我的理解是,finalize方法被垃圾回收器调用,不能依赖于在给定的时间被调用。

这些职位可能会给你更深入的了解:

我倾向于做我的的onPause或清理的onDestroy。

+1

根据“清理”的含义,我不确定我会建议在onPause方面做些什么,并记住onPause - > onResume - > onPause周期是Activity或Fragment生命周期中最紧密的部分。 – Squonk