Java Android异步事件处理(回调和事件总线)
我目前正在开发一款具有蓝牙低能耗功能的Android应用程序。Android BLE(蓝牙低能)方法调用本质上大部分(如果不是全部)是异步的。我已将此BLE处理功能封装到一个Java Android异步事件处理(回调和事件总线),java,android,asynchronous,bluetooth,callback,Java,Android,Asynchronous,Bluetooth,Callback,我目前正在开发一款具有蓝牙低能耗功能的Android应用程序。Android BLE(蓝牙低能)方法调用本质上大部分(如果不是全部)是异步的。我已将此BLE处理功能封装到一个服务中,并尝试将应用程序的其他部分与“Android BLE库的特定实现/接口”分离。因为Android Bluetooth API是异步的,所以我尝试将Android BLE回调“传递”到调用模块 我的示例用例如下所示 externalModuleInstance.getSomeProperty()将调用bleServic
服务中
,并尝试将应用程序的其他部分与“Android BLE库的特定实现/接口”分离。因为Android Bluetooth API是异步的,所以我尝试将Android BLE回调“传递”到调用模块
我的示例用例如下所示
externalModuleInstance.getSomeProperty()
将调用bleService.readCharacteristic(somePropertyId)
并且当在Android BLE堆栈中完成一些异步操作时,bleService将通过Android BLE API的回调得到结果通知如何将此结果传递回externalModuleInstance?
我提出了三个选项:回调、侦听器和EventBus(由greenrobot提供)
BleServiceInterface
并定义一些onSomeEvent()
方法,并在ExternalModule
中实现此接口。然后我将这个ExternalModule
实例注册为BleService
的侦听器。界面声明看起来清晰明了,这似乎是件好事ExternalModule
对特定的事件类/类型不感兴趣,而是对BleService
的结果感兴趣