【发布时间】:2021-08-17 19:20:32
【问题描述】:
在某些设备上使用 WorkManager 计划的作业(100 例中有 1 例)根本不会执行。我安排工作:
val constraints = Constraints.Builder()
.setRequiredNetworkType(NetworkType.CONNECTED)
.build()
WorkManager.getInstance(applicationContext)
.enqueueUniqueWork(SessionRecordReportingWorker.WORK_TAG, ExistingWorkPolicy.APPEND_OR_REPLACE,
OneTimeWorkRequest.Builder(SessionRecordReportingWorker::class.java)
.addTag(SessionRecordReportingWorker.WORK_TAG)
.setConstraints(constraints)
.setBackoffCriteria(BackoffPolicy.EXPONENTIAL, 30, TimeUnit.SECONDS)
.build());
当我执行 APPEND_OR_REPLACE 时,新作业会刷新整个数据库,所以这不是问题。新作业将删除以前的作业,但会发送所有数据。使用最新稳定版workmanager库
implementation "androidx.work:work-runtime-ktx:2.5.0"
我已经向客户询问了我能想到的所有问题:后台同步是否禁用、电源优化是否开启、此应用是否开启电源优化、电池电量不足。但是,当在我的 Android 11 上进行测试时 - 一切都按预期工作。作业被执行并发送到服务器。客户端在应用程序上执行正常的 Web 请求(因此他的网络已连接),然后应使用 workmanager 报告所有重要操作的日志/记录。但是在这种情况下,它不会被执行/发送。你能指出它的潜在原因吗?
【问题讨论】:
标签: android android-workmanager