V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
dzzchao
V2EX  ›  Android

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

  •  
  •   dzzchao · 2019-12-18 11:11:17 +08:00 · 10771 次点击
    这是一个创建于 1803 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

    如果可以,如何创建?

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

    9 条回复    2020-01-02 16:31:34 +08:00
    vanxy
        1
    vanxy  
       2019-12-18 11:34:05 +08:00   ❤️ 1
    不可以创建多实例;
    没有多个实例的场景;

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

    https://github.com/greenrobot/EventBus/blob/master/EventBus/src/org/greenrobot/eventbus/EventBus.java
    gramyang
        2
    gramyang  
       2019-12-18 11:43:17 +08:00
    没必要创建多个实例吧,eventbus 就是对 handler 的封装使用。
    说场景的话,android 作为前端也没有多复杂的并发场景。
    maninfog
        3
    maninfog  
       2019-12-18 11:47:22 +08:00 via iPhone
    @vanxy 利用 build()方法不就可以创建多实例了
    maninfog
        4
    maninfog  
       2019-12-18 11:49:26 +08:00 via iPhone
    @maninfog 不对 构造函数也是 public 的话那就可以随便创建了阿
    liuhuansir
        5
    liuhuansir  
       2019-12-18 13:45:17 +08:00
    @maninfog 你没看源码吧?
    woodensail
        6
    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
        7
    crayygy  
       2019-12-18 14:09:45 +08:00 via iPhone
    可以创建多个实例,只是 default instance 是个单例。
    至于有没有必要,看业务需求,大多数情况下我认为是没有必要的。
    maninfog
        8
    maninfog  
       2019-12-18 17:04:15 +08:00 via iPhone
    @liuhuansir 1 楼贴的源码明明白白的 pulic constructor 以及可以通过 Builder 的 build 方法生成新的实例 怎么就是成我没看源码了?有点奇怪,1 楼贴了源码还笃定不可以创建新的实例,而且还说源码"Eventbus 就是个单例",那只是别人帮你实现了一个单例而已。有点奇怪…
    gotosky
        9
    gotosky  
       2020-01-02 16:31:34 +08:00
    当然可以
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2982 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 19ms · UTC 13:23 · PVG 21:23 · LAX 05:23 · JFK 08:23
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.