Android 在onDestroy期间是否需要从视图中释放View.OnClickListener?

Android 在onDestroy期间是否需要从视图中释放View.OnClickListener?,android,android-view,Android,Android View,我有一个包含100个片段的大型项目。他们几乎都遵循我将要描述的模式,我的问题也将遵循 public class MyFragment extends Fragment implements View.OnClickListener { public void onDestroy(...) { } public void onCreateView(...) { ... root.findViewById(R.id.some_button)

我有一个包含100个片段的大型项目。他们几乎都遵循我将要描述的模式,我的问题也将遵循

public class MyFragment extends Fragment implements View.OnClickListener {

    public void onDestroy(...) {
    }

    public void onCreateView(...) {
        ...
        root.findViewById(R.id.some_button).setOnClickListener(this);
        return root;
    }

    public void onClick(View v) { ... }
}

我是否需要将侦听器从
onDestroy
中的片段中释放出来?这是内存泄漏还是会导致任何问题?清理这些垃圾被认为是良好的做法吗?如果可能的话,解释一下原因

不,您不必在onDestroy事件中释放onClickListener。即使片段是侦听器,垃圾收集器也足够聪明,可以解析循环引用。只要这两者在垃圾收集方面都是可省略的,就不会有问题

目前是否有任何观察到的执行命中?为什么监听器会泄漏到额外的内存中?不会。我最担心的是未来的问题或是后台应用程序的问题。我有一个合作伙伴告诉我,释放这些侦听器是一个好主意或好做法,我看不出有什么理由这样做。我从未见过任何关于删除单击侦听器的引用。当然,任何指向某个活动的“片段交互侦听器”都应该被删除,但这仅仅是因为该活动是在onDestroy上分离的。您有任何引用或证据支持这一点吗。另外,我如何知道哪些内容符合垃圾收集的条件?您可以阅读关于循环引用的声明,它也有在android上使用内存分析器的个人经验支持。@JBlaz我建议您阅读《用Java思考》一书。垃圾收集过程在这里得到了很好的解释。