【问题标题】:ViewBinding - do we need to remove clicklisteners to avoid memory leaks?ViewBinding - 我们是否需要删除 clicklistener 以避免内存泄漏?
【发布时间】:2021-02-04 06:41:02
【问题描述】:

当使用 Android ViewBinding 时,您是否必须显式删除 clickListeners 以避免内存泄漏,或者所有这些都通过释放绑定来处理?

binding.button.setOnClickListener { }

override fun onDestroyView() {
    super.onDestroyView()
    binding = null
}

【问题讨论】:

  • 您是否在您的OnClickListener 实例中存储了binding 的副本?否则我不确定你担心什么泄漏。您能否详细说明您认为可能发生泄漏的具体示例?

标签: android memory-leaks android-viewbinding


【解决方案1】:

仅当您将Fragment 实例添加到后台堆栈而不清除Fragment.onDestroyView() 回调中的Fragment 视图字段时,才会出现内存泄漏。

是的,您应该手动执行,ViewBinding 没有所需的实现。 如果您不想手动执行,您可以编写自己的委托来自动执行或使用设计良好的library

【讨论】:

  • 您链接到的库似乎对点击侦听器没有任何作用,而 binding = null - 您说这不能解决问题?
  • 如果您的听众不使用或存储生命周期大于视图片段生命周期的对象,那么它们应该没有任何问题。
猜你喜欢
  • 1970-01-01
  • 2012-11-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-08-03
  • 1970-01-01
相关资源
最近更新 更多