【发布时间】:2013-07-07 04:49:39
【问题描述】:
假设以下场景具有 A、B 类和事件总线的一个实例(它可以是 Guava event bus,由 Google 提供,或 Otto event bus,由 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”何时为空,那么事件总线将永远持有对该对象的无用引用(内存泄漏)?
【问题讨论】:
标签: java android guava event-bus otto