我需要在 onDestroy 期间从视图中释放 View.OnClickListener 吗?
Do I need to free View.OnClickListener from views during onDestroy?
我有一个包含 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。即使片段是监听器,垃圾收集器也足够聪明,甚至可以解决循环引用。只要两者都符合垃圾收集的条件,就不会有问题。
我有一个包含 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。即使片段是监听器,垃圾收集器也足够聪明,甚至可以解决循环引用。只要两者都符合垃圾收集的条件,就不会有问题。