Jetpack Workmanager не возвращает успех - PullRequest
0 голосов
/ 26 ноября 2018

Я использую 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

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

1 Ответ

0 голосов
/ 27 февраля 2019

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

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

workOperation.state.observe(this, Observer { state ->
     Timber.d("state: $state")
})
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...