我正在使用android.arch.work:work-runtime-ktx:1.0.0-alpha11,并且遇到了运行Android 7.0的Samsung Galaxy S8 +上的问题。在其他设备上也可以正常工作。
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
现在有没有解决这个问题的方法?
答案 0 :(得分:0)
您可以通过直接预订enqueue()
的返回值来观察状态,例如:
val workOperation = workManager.beginUniqueWork(LICENSE_UPLOAD_WORKER, ExistingWorkPolicy.REPLACE, work).enqueue()
workOperation.state.observe(this, Observer { state ->
Timber.d("state: $state")
})
答案 1 :(得分:0)
在我的应用程序开发周期中(在其他设备上)我遇到了相同的问题。对我来说,解决方案是简单地卸载我的应用程序。下次我从Android Studio启动它时,一切正常。