Я использую WorkManager
и RxWorker
для наблюдения за изменениями состояния батареи в системе.Возникла проблема при использовании Observable и преобразовании его в Single<result>
, так как RxWorker
поддерживает только Single<result>
.Вот мой фрагмент кода.
override fun createWork(): Single<Result> {
return Single.fromObservable(ReactiveBattery.observeBatteryChanges(appContext)
.map { batteryState ->
try {
Timber.e("Test with batterystate %s", batteryState.toString())
outputData = workDataOf(BATTERY_LEVEL to batteryState.level())
Result.success(outputData)
} catch (e: Exception) {
Timber.e(e, "Test ")
Result.failure()
}
})
}
Вот мой код observeBatteryChanges()
.
@CheckResult
@NonNull
public static Observable<BatteryState> observeBatteryChanges(@NonNull final Context context) {
Preconditions.checkNotNull(context, "context == null");
BatteryObservingStrategy strategy = new GenericBatteryObservingStrategy();
return strategy.observeBatteryChanges(context);
}
Работает, но со статусом FAILED
, я не получаю статус SUCCEEDED
а также наблюдаемый не запуск изменений батареи ОС.
Кто-нибудь может подсказать, как я могу это сделать?