我对 RxJava 还很陌生。我现在尝试 RxAndroidBle 并将其与 BLE 的 Android API 实现进行比较。我的外设一次发送大量通知
(512b block 中大约 30kB)。在 Rx 中,接收全部消息大约需要 10-12 秒。
当我尝试使用 Android API 时,大约需要 2-3 秒。
在我的 RxAndroidBle 实现中,我按照示例应用程序中的建议进行操作:
connectionObservable
.flatMap(rxBleConnection -> rxBleConnection.setupNotification(UUID.fromString(mCharacteristicUUID)))
.doOnNext(notificationObservable -> runOnUiThread(this::notificationHasBeenSetUp))
.flatMap(notificationObservable -> notificationObservable)
.observeOn(AndroidSchedulers.mainThread())
.subscribe(
this::onNotificationReceived,
this::onNotificationSetupFailure
);
有什么办法可以让它更快吗?
最佳答案
在您的代码 fragment 中,通知在主线程上使用,该线程也用于刷新 UI。如果您不更新 UI 并且希望获得尽可能高的性能,您可以删除 .observeOn(AndroidSchedulers.mainThread())
行。
示例只是示例 - 它们很少针对特定用例(本例中的性能)进行优化。
记住your other question并且当使用普通 Android API 和 RxAndroidBle 时,操作系统或您的外设似乎工作方式有所不同,因此可能还值得问一个问题,这两种实现是否在相同的条件下工作。
关于android - RxAndroidBle 更快地接收通知,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50857496/