Java Android-在onStart()中设置接口并在onStop()中清除它们

Java Android-在onStart()中设置接口并在onStop()中清除它们,java,android,interface,android-lifecycle,Java,Android,Interface,Android Lifecycle,我在onStart()中看到了许多Android代码设置接口的示例;方法,并使用null inside onStop()清除它们 例如: @Overrride public void onStart(){ button.setOnClickListener(this); } @Override public void onStop(){ button.setOnClickListener(null); } 为什么会这样?这是一种良好的编码实践吗?只有当没有活动(非守护进程)线

我在onStart()中看到了许多Android代码设置接口的示例;方法,并使用null inside onStop()清除它们

例如:

@Overrride
public void onStart(){
    button.setOnClickListener(this);
}

@Override
public void onStop(){
    button.setOnClickListener(null);
}

为什么会这样?这是一种良好的编码实践吗?

只有当没有活动(非守护进程)线程引用对象时,对象才有资格进行垃圾收集。而
android.app.Activity
的生命周期在调用
onDestroy()
方法后理论上会完成,它仍然需要从任何可能持有对它的引用的对象中取消引用。因此,上面的代码尝试从
按钮
对象中删除它自己的引用,以便它有资格进行垃圾收集