Din*_*avi 17 android android-service bluetooth-lowenergy android-broadcast greenrobot-eventbus
我已经实现了一个服务,我处理状态更改(连接,断开连接,onServiceDiscoverd,onCharacteristicChange等)并通过gatt服务器从另一个设备接收数据.
我的问题是,使用Greenrobot Eventbus 在服务和活动之间替换广播接收器可以有效地处理事件吗?
Abd*_*Aly 14
与LocalBroadcastManager不同,EventBus更易于使用.你只需经过3个步骤:
1-创建一个事件类.一个简单的Java类,表示操作发生时的响应.
2-在Activity onCreate方法中将订户注册为订户
EventBus.getDefault().register(this);
Run Code Online (Sandbox Code Playgroud)
当然,请在Activity onDestroy方法中取消注册
EventBus.getDefault().unregister(this);
Run Code Online (Sandbox Code Playgroud)
3-订阅方法是在为EventBus注册的同一活动中创建的.WorkOrderActivity中的示例
@Subscribe
public void onEvent(EventClass event)
Run Code Online (Sandbox Code Playgroud)
当事件发生时,您应该调用post方法,传递您之前创建的事件对象.
EventBus.getDefault().post(new EventClass (Data));
Run Code Online (Sandbox Code Playgroud)
正如kmaini所提到的,你可以用LocalBroadcastManager替换它,但是你必须自己映射意图中的数据.与可以传递对象的EventBus不同.
此外,EventBus Library的创建者greenrobot 在这里回答了这个问题:
问:EventBus与Android的BroadcastReceiver/Intent系统有何不同?
答:与Android的BroadcastReceiver/Intent系统不同,EventBus使用标准Java类作为事件,并提供更方便的API.EventBus适用于更多用例,您不希望经历设置Intent,准备Intent附加功能,实现广播接收器以及再次提取Intent附加功能的麻烦.此外,EventBus的开销要低得多.