- mongodb - 在 MongoDB mapreduce 中,如何展平值对象?
- javascript - 对象传播与 Object.assign
- html - 输入类型 ="submit"Vs 按钮标签它们可以互换吗?
- sql - 使用 MongoDB 而不是 MS SQL Server 的优缺点
我已经实现了一项服务,我在其中处理状态更改(连接、断开连接、onServiceDiscoverd、onCharacteristicChange 等)并通过 gatt 服务器从另一台设备接收数据。
我的问题是,是否可以使用 Greenrobot Eventbus 替换广播接收器在服务和 Activity 之间来有效处理事件?
最佳答案
与 LocalBroadcastManager 不同,EventBus 更易于使用。您只需执行 3 个步骤:
1- 创建一个事件类。表示响应时的简单 Java 类 Action 发生。
2- 在 Activity onCreate 方法中将事件总线注册为订阅者
EventBus.getDefault().register(this);
当然,在你的 Activity onDestroy 方法中取消注册
EventBus.getDefault().unregister(this);
3- 订阅方法是在为 EventBus 注册的同一 Activity 中创建的。 WorkOrderActivity 中的示例
@Subscribe
public void onEvent(EventClass event)
当事件发生时,你应该调用 post 方法,传递你之前创建的事件对象。
EventBus.getDefault().post(new EventClass (Data));
正如 kmaini 所提到的,您可以将其替换为 LocalBroadcastManager,但您必须自己映射来自 Intent 的数据。与可以传递对象的 EventBus 不同。
另外,EventBus 库的创建者 greenrobot 回答了这个问题 here :
Q: How's EventBus different to Android's BroadcastReceiver/Intent system?
A: Unlike Android's BroadcastReceiver/Intent system, EventBus uses standard Java classes as events and offers a more convenient API. EventBus is intended for a lot more uses cases where you wouldn't want to go through the hassle of setting up Intents, preparing Intent extras, implementing broadcast receivers, and extracting Intent extras again. Also, EventBus comes with a much lower overhead.
关于android - 用 Greenrobot Eventbus 替换广播接收器是否可以触发基于事件的功能和从服务到 Activity 的数据传输?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33141091/
我经常使用 greenrobot 的 EventBus https://github.com/greenrobot/EventBus 但我刚刚意识到 Guava 有自己的 EventBus com.g
对于 EventBus,我将代码合并到我的 java Spring 应用程序中并完全控制它,但结果没有改变。 当我在 spring sts (javaw) 中运行 EventBus 时,没有问题,但是
我想做的是将一个事件从另一个 AWS 账户发送到我的包含事件总线的账户。 为此,我正在尝试将角色/策略附加到 EventBus,但我做不到。我尝试使用 grantPutEvents 但也没有运气。这个
我想做的是将一个事件从另一个 AWS 账户发送到我的包含事件总线的账户。 为此,我正在尝试将角色/策略附加到 EventBus,但我做不到。我尝试使用 grantPutEvents 但也没有运气。这个
我是这个 eventbus 库的粉丝,并且在其他项目中很好地使用了它,没有遇到任何问题。但是现在,我在 Activity 中注册事件总线时遇到了一些奇怪的问题,并且在这里卡住了这部分... java.
我目前正在使用 Fragments 在 Activities 下创建的 FragmentPagerAdapter。我使用 GreenRobot 的 EventBus 3.0 返回我从服务类创建的一些
前沿 vue组件非常常见的有父子组件通信,兄弟组件通信。而父子组件通信就很简单,父组件会通过 props 向下传数据给子组件,当子组件有事情要告诉父组件时会通过 $emit 事件告诉父组件。如果1个页
早晨, 我正在使用 SimpleEvent总线将数据从我的集中式数据恢复器发送到小部件。这真的很好用,我从服务器获得一组新数据,RPC 调用的成功方法将它放在 Eventbus 上,每个小部件查看数据
我在Android应用程序中使用EventBus。在我的Eventbus.getDefault().register(this)中编写一个Application.onCreate()是一个好主意吗?我
我正在尝试使用 Vertx 上传文件,该请求是包含 PDF 的 POST 请求,我的处理程序如下所示(我从 github 中的示例中获取了代码): ... Set fileUploadSet = ro
所以我在 Vue.js 中使用 EventBus 将数据从一种方法发送到另一种方法。我有两种方法,比方说 one() 和 two()。我正在使用 EventBus,如下所示: one() { Ev
我有一个使用这个库的情况 greenrobot/EventBus保存数据并将它们传递给不同的 Activity 。在这种情况下,我使用 EventBus 来传递“订单”和 “cartItems” OB
我使用 greenrobot 作为 eventbus 来发布一些粘性事件。一切正常,当我打开应用程序时,ex。显示的内容表明粘帖工作正常。 但是当我关闭应用程序并打开它第二次、第三次……时,没有前任。
我在使用 EventBus 3.0.0 时遇到问题,我在其中发布了一个这样的事件: Call> call = httpService.getSessionSpecs(); call.enqueue(n
我在 android 中学习事件总线(http://greenrobot.org),我有以下代码 public class MainActivity extends AppCompatActivity
我正在尝试弄清楚如何在我的 AppWidgetProvider 中使用 Greenbot Eventbus 库。我尝试了以下方法,但没有用: public class SimpleWidgetProv
在我的安卓应用中我使用 org.greenrobot.eventbus.EventBus; 1.我创建事件: public class NotLoginEvent { } 在我的 fragment 中
我正在尝试从我的 WS 获取位置并更新我的 GoogleMap fragment 中的标记,所以我正在做的是: 我的 HomeActivity 包含 2 个 fragment (2 个 GoogleM
我正在尝试在我所有对话的基类中实现一些通用逻辑和对某些事件的 react 。 并在 EventBus 中注册和注销,并在基类中捕获一些事件。 因此,当我尝试实例化派生类的实例时 - EventBus
我在库中有一个带注释的 Activity,它是同一库中 EventBus 事件的订阅者。它看起来像这样,大大简化了: @EActivity(resName = "activity_foo") publ
我是一名优秀的程序员,十分优秀!