是否有必要在分离时将Fragment接口侦听器设置为null?

The*_*ker 9 java android interface callback android-fragments

在涉及回调的Fragment示例中,通常它们在onAttach方法中分配侦听器,然后在onDetach方法中将侦听器设置为null.

这最后一部分是否必要?片段分离/销毁时,侦听器是否自动设置为null?或者在某些情况下你可能会分离片段并将其重新附加到其他地方,并且你不希望回调指向任何特定的东西,直到它重新附加到某些东西上?

Dan*_*iev 8

我从来没有明确地设置监听器引用null,因为在大多数情况下它不会有所作为.

以下是对您其他问题的一些说明:

  • 片段分离/销毁时,侦听器是否自动设置为null?并不是的.onDetach()onDestroy()反映组件生命周期,但不反映对象生命周期.那里什么都不会自动发生.当您的片段实例被垃圾收集时,对该侦听器的引用将被破坏.如果这是对您的侦听器的唯一引用,则它也有资格进行垃圾回收.
  • 或者在某些情况下你可能会分离片段并将其重新附加到其他地方,并且你不希望回调指向任何特定的东西,直到它重新附加到某些东西上?我会说这是不太可能的.在正常用例中,您必须分配侦听器onAttach(),因此您确信可以正确委派事件.之后onDetach(),在重新附加片段之前,您将不会收到任何需要委派的事件.并且,如果你重新附加它,那么你将拥有正确的监听器实例,因为你已经处理过了onAttach().


Yoa*_*uet 5

我从不关闭任何接口侦听器,并且使用了很多接口侦听器,从未遇到任何问题。

官方文档解释了fragment之间的通信,也没有关闭示例中的监听器。

您还可以在此处提供的官方示例中自行检查,侦听器在片段中没有关闭。我认为如果有必要的话谷歌至少会提到它。