gpt4 book ai didi

android - WorkManager 上的一次性作业未在某些设备上运行

转载 作者:行者123 更新时间:2023-12-05 04:46:23 26 4
gpt4 key购买 nike

在某些设备上使用 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 上进行测试时——一切都按预期进行。作业被执行并发送到服务器。客户端在应用程序上执行正常的网络请求(因此他的网络已连接),然后应使用 workmanager 报告所有重要操作的日志/记录。但是在这种情况下,它不会被执行/发送。你能指出它的潜在原因吗?

最佳答案

WorkManager 不可靠:

https://dontkillmyapp.com/

基本上,你可以到此为止......

除此之外,您可以通过调试 JobScheduler 来查看工作中发生了什么,但由于它没有发生在您的环境中。我不知道该给您什么建议。

https://developer.android.com/topic/libraries/architecture/workmanager/how-to/debugging

使用 adb shell dumpsys jobscheduler

您需要检查转储:

  • 如果当前有计划任务
  • 已执行任务的历史
  • 满足与不满足的约束条件
  • 应用待机桶
  • 网络/配额的可用毫秒数

关于android - WorkManager 上的一次性作业未在某些设备上运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68822937/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com