一旦适配器不再使用,最终确定适配器的视图支架

时间:2017-02-12 07:01:51

标签: android memory-leaks android-recyclerview

考虑以下情况

  • 片段(例如用作滑动布局中的页面)使用RecyclerView

  • RecyclerView的适配器创建了在Observable上将自己注册为观察者的视图。

  • Observable是一个分享应用程序生命周期的单例,而不是片段的

问题是,当片段停止时(我假设此时适配器的onDetachedFromRecyclerView被调用并且它与recyclelerview一起被垃圾收集)视图持有者将不会,因为Observable仍然引用它们,从而导致内存泄漏。我的问题是如何做到这一点?

免责声明,以下段落是我认为解决方案最初可能会失败的,我的问题不是如何使解决方案工作,因为这可能是一个XY问题。

所以我需要找到一种方法从每个视图中调用observable.deleteObserver(this)。我假设我可以从onDetachedFromRecyclerView这样做。我遇到的问题是如何迭代所有视图持有者。

对于标题中的混乱,我很擅长命名:(

0 个答案:

没有答案