通过Event Bus Post发布对象

时间:2017-03-09 10:43:06

标签: android greenrobot-eventbus

我应该为一个事件总线发布多少个事件?例如 -

注册事件总线 - EventBus.getDefault()。register(this);

发布事件 - EventBus.getDefault()。post(Object);

如果我无法取消注册EventBus,是否有任何问题?

2 个答案:

答案 0 :(得分:1)

EventBus中的事件数量没有限制。

如果您注册到EventBus的对象的生命周期短于EventBus的生命周期(通常与应用程序生命周期相同),您肯定需要从EventBus取消注册。如果不这样做,注册对象将始终在EventBus中引用它,这将阻止垃圾收集器完成其工作。

假设您有一个订阅活动的文件查看器活动。您可以打开文件,查看它,关闭活动并打开另一个使用相同活动的文件。现在,如果您不取消订阅EventBus,那么用户打开的所有活动都将在EventBus中引用它们。它们永远不会被垃圾收集,因此最终应用程序将耗尽内存。

答案 1 :(得分:0)

您可以根据需要发布事件。如果你不打电话取消注册,事件将在你关闭的活动中被删除。你将有内存泄漏,因为EventBus将包含你关闭活动的参考。此外,这可以产生一个例子,例如,你将对你的视图进行一些整理,当你关闭活动时,在EventBus订阅方法中它会变为空。