我在RxJava中很新。我现在尝试RxAndroidBle,并将其与BLE的Android API实现进行比较。我的外围设备一次发送了很多notifications(512b块中大约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
    );


有什么方法可以使其更快?

最佳答案

在代码片段中,通知在主线程上使用,该主线程也用于刷新UI。如果您不更新UI并希望获得最高的性能,则可以摆脱.observeOn(AndroidSchedulers.mainThread())行。

样本只是样本-很少针对特定用例(在这种情况下为性能)进行优化。

考虑到your other question,并且当操作系统或您的外围设备被香草Android API和RxAndroidBle使用时,它们的工作方式似乎有所不同,因此还可能要问一个问题,即两种实现在相同条件下是否都可以工作。

关于android - RxAndroidBle更快地接收通知,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/50857496/

10-12 00:29