Post通过事件总线访问对象Post
Posting Objects through Event Bus Post
对于单个事件总线,我应该 post 多少个事件?例如 -
正在注册事件总线 - EventBus.getDefault().register(this);
发布事件 - EventBus.getDefault().post(对象);
如果我无法注销 EventBus 是否有任何问题
您可以 post 想参加多少活动就参加多少。如果你不调用取消注册,事件将被传递,例如你关闭的 activity.You 将有内存泄漏,因为 EventBus 将包含你关闭的 activity 的引用。这也可以产生一个扩展,例如,您将与您的视图进行一些交互,当您在 EventBus 订阅方法中关闭 activity 时,该视图变为 null。
EventBus 中的事件数量没有限制。
如果您注册到 EventBus 的对象的生命周期短于 EventBus 的生命周期(通常与应用程序生命周期相同),您肯定需要从 EventBus 中注销。如果不这样做,注册的对象将始终在 EventBus 中引用它,这将阻止垃圾收集器完成其工作。
假设您有一个订阅事件的文件查看器activity。您可以打开一个文件,查看它,关闭 activity 并打开另一个使用相同 activity 的文件。现在,如果您不取消订阅 EventBus,则用户打开的所有活动都将在 EventBus 中引用它们。它们永远不会被垃圾回收,因此最终应用程序会 运行 内存不足。
对于单个事件总线,我应该 post 多少个事件?例如 -
正在注册事件总线 - EventBus.getDefault().register(this);
发布事件 - EventBus.getDefault().post(对象);
如果我无法注销 EventBus 是否有任何问题
您可以 post 想参加多少活动就参加多少。如果你不调用取消注册,事件将被传递,例如你关闭的 activity.You 将有内存泄漏,因为 EventBus 将包含你关闭的 activity 的引用。这也可以产生一个扩展,例如,您将与您的视图进行一些交互,当您在 EventBus 订阅方法中关闭 activity 时,该视图变为 null。
EventBus 中的事件数量没有限制。
如果您注册到 EventBus 的对象的生命周期短于 EventBus 的生命周期(通常与应用程序生命周期相同),您肯定需要从 EventBus 中注销。如果不这样做,注册的对象将始终在 EventBus 中引用它,这将阻止垃圾收集器完成其工作。
假设您有一个订阅事件的文件查看器activity。您可以打开一个文件,查看它,关闭 activity 并打开另一个使用相同 activity 的文件。现在,如果您不取消订阅 EventBus,则用户打开的所有活动都将在 EventBus 中引用它们。它们永远不会被垃圾回收,因此最终应用程序会 运行 内存不足。