我听使用OnGlobalLayoutListener
布局视图的变化:不能删除的ViewTreeObserver侦听器是否会导致内存泄漏?
view.getViewTreeObserver().addOnGlobalLayoutListener(myListener);
因为我很感兴趣,只要视图是否存在我认为没有必要调用removeOnGlobalLayoutListener(myListener)
这个监听的事件。
这可能导致内存泄漏,或者是与视图一起收集的侦听器垃圾?假设监听者拥有对视图的引用。
背景是,我想创建一个模块,可以附加到某些视图,并根据布局更改做东西。如果不需要删除,那么它的创建就像new FancyModule(theView)
一样简单,然后构造函数负责绑定侦听器。如果需要移除,我必须实现一个我想要阻止的析构函数方法。
侦听器和视图只保存彼此的循环引用。没有涉及其他组件。我不确定一个视图的getViewTreeObserver()是否可能返回比视图本身更长的对象。 – McFarlane
好吧,如果没有别的东西从外面持有参考周期,那就没问题。 – Tomik