我在RxJava
中很新。我现在尝试使用RxAndroidBle并将其与BLE的Android API实现进行比较。我的外围设备一次发送了大量notifications
(512b块中大约30kB)。在Rx中,接收它们大约需要10-12秒。
当我尝试使用Android API时,大约需要2-3秒。
在我的RxAndroidBle实现中,我按照示例app中的建议执行:
connectionObservable
.flatMap(rxBleConnection -> rxBleConnection.setupNotification(UUID.fromString(mCharacteristicUUID)))
.doOnNext(notificationObservable -> runOnUiThread(this::notificationHasBeenSetUp))
.flatMap(notificationObservable -> notificationObservable)
.observeOn(AndroidSchedulers.mainThread())
.subscribe(
this::onNotificationReceived,
this::onNotificationSetupFailure
);
有没有办法让它更快?
答案 0 :(得分:0)
在您的代码中,剪切通知在主线程上消耗,主线程也用于刷新UI。如果您没有更新UI并希望获得最高性能,则可以摆脱.observeOn(AndroidSchedulers.mainThread())
行。
样品只是样品 - 它们很少针对特定用例进行优化(在这种情况下是性能)。
考虑到your other question并且当使用vanilla Android API和RxAndroidBle
时,操作系统或外围设备的工作方式似乎有所不同,也可能值得问一个问题是两个实现是否在同一个工作下运行条件。