Eventbus 是否可以创建多个实例?

2019-12-18 11:11:17 +08:00
 dzzchao

Eventbus 是否可以创建多个实例?

如果可以,如何创建?

还是说,没有创建多个实例的场景,只需要一 EventBus.getDefault() 就可以满足所有需求?

6787 次点击
所在节点    Android
9 条回复
vanxy
2019-12-18 11:34:05 +08:00
不可以创建多实例;
没有多个实例的场景;

源码:实际上 EventBus 就是个单例

https://github.com/greenrobot/EventBus/blob/master/EventBus/src/org/greenrobot/eventbus/EventBus.java
gramyang
2019-12-18 11:43:17 +08:00
没必要创建多个实例吧,eventbus 就是对 handler 的封装使用。
说场景的话,android 作为前端也没有多复杂的并发场景。
maninfog
2019-12-18 11:47:22 +08:00
@vanxy 利用 build()方法不就可以创建多实例了
maninfog
2019-12-18 11:49:26 +08:00
@maninfog 不对 构造函数也是 public 的话那就可以随便创建了阿
liuhuansir
2019-12-18 13:45:17 +08:00
@maninfog 你没看源码吧?
woodensail
2019-12-18 14:01:55 +08:00
@liuhuansir 虽然我不做 android,但是一楼给的注释里面构造函数上的注释写着「 Creates a new EventBus instance; each instance is a separate scope in which events are delivered.」

是可以构造多个的,虽然不推荐。
crayygy
2019-12-18 14:09:45 +08:00
可以创建多个实例,只是 default instance 是个单例。
至于有没有必要,看业务需求,大多数情况下我认为是没有必要的。
maninfog
2019-12-18 17:04:15 +08:00
@liuhuansir 1 楼贴的源码明明白白的 pulic constructor 以及可以通过 Builder 的 build 方法生成新的实例 怎么就是成我没看源码了?有点奇怪,1 楼贴了源码还笃定不可以创建新的实例,而且还说源码"Eventbus 就是个单例",那只是别人帮你实现了一个单例而已。有点奇怪…
gotosky
2020-01-02 16:31:34 +08:00
当然可以

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/630078

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX