是否需要在Fragment的onDestroy()中将ViewBinding设置为null?

Vik*_*tor 22 java android android-fragments kotlin

是否需要在Fragment的onDestroy()中将ViewBinding设置为null?有时我在教程中看到这个东西。真的有必要吗?

raj*_* ks 19

这是必要的,也是一个非常好的实践,特别是在内存限制很大的 Android 中,当你使用完资源时,你确实需要注意清理资源。ViewBinding会生成一个自定义ViewBinding类,它会保留对你views里面所有视图的引用Fragment,如果ViewBinding没有被清除或者设置为null,它就没有资格GC,从而将所有视图保留在内存中,即使你不使用它,导致内存占用泄漏。所以,是的,最好将其设置为null生命周期结束时。

  • 虽然这是公认的答案,但我并不真正相信这个理论,有任何证据支持它吗?我问这个问题是因为如果 ViewBinding 类是在片段内创建的,那么它会与片段一起存在,并且会与片段一起被销毁,因为它是片段的一部分。另外,将 var 设置为 null 并不一定保证 GC 会清理它。var 可以为 null 但仍然可达。 (5认同)
  • @Tharkius确实如此,但这里 ViewBinding 链接到视图的生命周期,而不是片段的生命周期。这就是为什么它应该在视图被销毁时被清除,而不是在片段被销毁时被清除。 (3认同)
  • 我应该在“super.onDestroyView()”之后还是之前执行此操作? (2认同)
  • 除非你在“onDestroyView”中执行此操作,否则并不重要 (2认同)

SVK*_*SVK 7

是的,建议onDestroyView.

ViewBinding 的作用域为片段视图的生命周期(在onCreateView和之间onDestroyView)。 它仅在onCreateView和onDestroyView之间有效。

因此,请将fragment的.ViewBinding设置为null onDestroyView

  • 如果我们在 Activity 中使用 ViewBinding 会怎样?我们是否在 onDestroy() 中将绑定设置为 null? (2认同)