假设以下场景具有 A、B 类和事件总线的一个实例(它可以是Guava 事件总线,由 Google提供,也可以是Otto 事件总线,由 Squ.re 提供)
class A{
@Subscribe
public void onSomething(B event){
//do something
}
}
A a = new A();
eventBus.subscribe(a);
eventBus.post(new B());
// onSomething is called, everything ok
a = null;
eventBus.post(new B());
// onSomething is called again
现在,如果我运行它(仅用 Otto 测试)onSomething
被调用 2 次。
¿ 事件总线是否会保留对“ a
”的引用,直到调用取消注册?
更重要的是
¿ 如果由于某种原因我无法确定 ' a
' 为空的时刻,那么事件总线将永远持有对该对象的无用引用(内存泄漏)?