考虑以下情况
片段(例如用作滑动布局中的页面)使用RecyclerView
RecyclerView的适配器创建了在Observable上将自己注册为观察者的视图。
Observable是一个分享应用程序生命周期的单例,而不是片段的
问题是,当片段停止时(我假设此时适配器的onDetachedFromRecyclerView
被调用并且它与recyclelerview一起被垃圾收集)视图持有者将不会,因为Observable仍然引用它们,从而导致内存泄漏。我的问题是如何做到这一点?
免责声明,以下段落是我认为解决方案最初可能会失败的,我的问题不是如何使解决方案工作,因为这可能是一个XY问题。
所以我需要找到一种方法从每个视图中调用observable.deleteObserver(this)
。我假设我可以从onDetachedFromRecyclerView
这样做。我遇到的问题是如何迭代所有视图持有者。