草庐IT

greenrobot-eventbus

全部标签

android - 具有线程安全性的事件总线的最佳实践

我的应用程序具有用于用户交互的Activity和后台服务,这是唯一修改数据模型的地方。后台服务监听用户执行的操作以及来自网络的传入消息。因此可能会出现并发问题,我试图通过使用处理程序来防止这些问题。对于事件层,我使用greenrobotsEventbus。这一切都运行良好,但我想知道是否有更智能/更快/代码更少(因此更不容易出错)的方式来处理这个用例?更具体地说:有没有办法确保onEvent方法的串行执行没有处理程序?有没有onEvent方法的替代方法对于每个可能的事件?我有更好的模式吗在这里做什么?这是我的方法:在oncreate方法中,我会注册服务(如果有Activity,我会在o

android - Greenrobot 的 Eventbus : Two Fragments calling async tasks jobs got Eventbus confused

我目前正在使用Fragments在Activities下创建的FragmentPagerAdapter。我使用GreenRobot的EventBus3.0返回我从服务类创建的一些AsyncTasks。但是,由于这两个fragment是一个接一个创建的,因此事件总线的poststicky的返回混淆了订阅的fragment。我搜索了stackoverflow,做了其他人所做的(例如,将eventBus注册到onStart和OnStop等),但我仍然看不到类似的问题。希望您能够帮助我。谢谢!这是我的两个fragment:(我省略了一些不必要的代码)1。状态fragment@Overridep

android - 如何/我应该使用 Mockito 对 EventBus 事件进行单元测试?

我在我的Android应用中使用Otto的EventBus。在我的LoginNetworkOperation类中,我捕获了不同类型的网络连接错误,并为每个错误发布了不同的总线事件,并且我的LoginPresenter类被注册为监听器并且当这些事件被触发时,某些方法被调用。我的问题是如何(并且应该)对LoginNetworkOperation是否抛出此事件以及LoginPresenter使用Mockito处理它进行单元测试?我看了这个问题:GuavaEventBusunittests但它没有提供足够的信息,尤其是在实现部分。publicclassLoginNetworkOperation

android - 带有 EventBus 的 Model View Presenter,如何将事件返回给 Presenter?

我正在使用Model-View-Presenter设计模式和EventBus(Otto)。我实现此模式的全部原因是仅将事件与演示者分离,并让演示者更新View。这是我拥有的一些代码的示例,我将使用获取Events作为示例。(请注意,Events不同于EventBusEvent,意思是Events中的一个Eventcode>是一个类似“爸爸的生日”的事件,但是EventBus中的一个Event是一个总线事件。fragmentpublicclassEventFragmentextendsFragment{privateEventPresentermEventPresenter;//Init

android - Fragment 在 resume 后不响应 UI 更新和 eventbus 事件

我有一个SearchFragment类,它扩展了一个名为BaseFragment的类,其中onResume和onStop被重写为下面:@OverridepublicvoidonResume(){checkEventBusRegistration();super.onResume();}@OverridepublicvoidonStop(){EventBus.getDefault().unregister(this);super.onStop();}publicvoidcheckEventBusRegistration(){if(!EventBus.getDefault().isRegi

android - EventBus的使用、内存和架构

我开始在我的应用程序中使用EventBus,它真的很好用,它解决了很多问题并简化了代码,并且在整个应用程序中传播所有线程和一切都很棒,但我感觉我可能滥用事件的使用。现在一切都很好,我正在功能强大的设备上进行测试,应用响应非常好,但我还有很多编码工作要做,我开始质疑自己触发太多事件会产生怎样的影响整个应用程序。因此,如果我的应用程序中有很多事件存在一些问题,或者是否存在与此事件的使用相关的一些已知内存问题,那么这个问题是针对任何有使用该库经验的人的问题。我试图明智地使用它,但很难不将它大量包含在您的体系结构中,因为它是一个非常好的功能。无论如何,如果您对这个主题有话要说,那将是很好的,因

Android:用Greenrobot EventBus如何在2个Activity之间通信?

我想在2个Activity之间进行通信。两者都是register()和unregister()方法:@OverridepublicvoidonStart(){super.onStart();EventBus.getDefault().register(this);}@OverridepublicvoidonStop(){EventBus.getDefault().unregister(this);super.onStop();}当我在列表中单击(项目选择)时,ActivityB启动。ActivityB的目的是更新一些信息,并将这些新信息发送给ActivityA;所以在ActivityB

android - 未收到 Greenrobot EventBus 事件

我正在使用GreenrobotEventBus将事件从一个Activity传递到另一个Activity。流程是这样的:Activity1启动->扫描条形码->Activity2启动->接受或拒绝响应并向Activity1发送事件。因此Activity2通过执行以下操作向Activity1发送一个新事件:@OverridepublicvoidonCreate(){EventBus.getDefault().register(this);//otherinitializationcodeEventBus.getDefault().post(newMyEvent());}在Activity1

AndroidAnnotations 和 EventBus

我在库中有一个带注释的Activity,它是同一库中EventBus事件的订阅者。它看起来像这样,大大简化了:@EActivity(resName="activity_foo")publicclassFooextendsActivity{publicvoidonEvent(BarEventevent){doSomething();}}它应该按照这个工作:http://timnew.me/blog/2014/09/14/otto-and-android-annotations-compatibility-issue-analysis/但实际上它返回了这个错误:Unabletostarta

android - otto eventbus for android 在发布版本中表现不同

我有一个单例服务类,它按设定的时间表从服务器中提取数据。一旦客户端收到数据,我就会触发bus.post(newNewServerResponseEvent());(http://square.github.io/otto/)然后在我的fragment中我这样做:@OverridepublicvoidonResume(){super.onResume();eventBus.register(this);}@OverridepublicvoidonPause(){super.onPause();eventBus.unregister(this);}@Subscribepublicvoidh