Jetpack Workmanager не возвращает успех

Я использую android.arch.work:work-runtime-ktx:1.0.0-alpha11 и столкнулся с проблемой на Samsung Galaxy S8 + под управлением Android 7.0. С другими устройствами работает нормально.

    val constraints = Constraints.Builder()
            .setRequiredNetworkType(NetworkType.CONNECTED)
            .build()
    val inputData: Data = Data.Builder()
            .putString(INPUT_DATA_FRONT_URI, front?.toString())
            .putString(INPUT_DATA_BACK_URI, back?.toString())
            .build()
    val work = OneTimeWorkRequestBuilder<LicenseUploadWorker>()
            .setConstraints(constraints)
            .setInputData(inputData)
            .build()
    workManager.beginUniqueWork(LICENSE_UPLOAD_WORKER, ExistingWorkPolicy.REPLACE, work)
            .enqueue()

Работа запланирована и выполняется успешно, однако LiveData я получаю отсюда

workManager.getWorkInfoByIdLiveData(work.id)

никогда не получает обновление состояния WorkInfo.State.SUCCEEDED. Из логов видно, что работа проходит без проблем:

11-26 12:12:03.693 6820 6852 I WorkerWrapper: Worker result SUCCESS for Work

Есть ли на данный момент способ обойти эту проблему?

Как вы наблюдаете за LiveData, возвращаемым WorkManager? есть пример в Codelab WorkManager: codelabs.developers.google.com/codelabs/android-workmanager-‌ kt /…

pfmaggi 23.12.2018 14:43
4
1
237
2

Ответы 2

вы можете наблюдать за статусом, подписавшись непосредственно на возвращаемое значение enqueue(), например:

val workOperation = workManager.beginUniqueWork(LICENSE_UPLOAD_WORKER, ExistingWorkPolicy.REPLACE, work).enqueue()

workOperation.state.observe(this, Observer { state ->
     Timber.d("state: $state")
})

Мне нужно было состояние, находящееся довольно далеко от всех lifecycleOwners (UI), но я все же реализовал обходной путь с помощью LiveData.

Євген Гарастович 04.11.2020 14:59

У меня была такая же проблема во время цикла разработки моего приложения (на другом устройстве). Решением для меня было просто удалить мое приложение. В следующий раз, когда я запустил его из Android Studio, все заработало.

Другие вопросы по теме