我目前正在开发具有蓝牙低功耗功能的Android应用程序。 Android BLE(蓝牙低功耗)方法调用大多数(如果不是全部)异步性质。我已将此BLE处理功能封装到Service
中,并试图将应用程序的其他部分与“Android BLE库的特定实现/界面”分离。由于Android蓝牙API是异步的,我试图将Android BLE回调“传递”到调用模块。
我的示例用例如下所示。
externalModuleInstance.getSomeProperty()
将调用bleService.readCharacteristic(somePropertyId)
,当在Android BLE堆栈中完成某些异步操作时,bleService将通过Android BLE API回调结果得到通知。 我应该如何将此结果传回 externalModuleInstance ?
我想出了三个选项:回调,听众和EventBus(由greenrobot提供)。
BleServiceInterface
并定义一些onSomeEvent()
方法,并在ExternalModule
中实现此接口。然后我将这个ExternalModule
实例注册为BleService
的监听器。这似乎很好,界面声明似乎清晰明了。ExternalModule
对特定类/事件类型不感兴趣,而是对BleService
的结果感兴趣。我真的很好奇别人对这个问题的看法以及在这种情况下使用什么,以及一般的异步事件处理。请随时纠正和教育我!