有没有办法知道 WorkManager Job 是否因为约束而没有执行?
Is there a way to know if a WorkManager Job did not execute because of a constraint?
现在我在 WorkManager
上有一些使用此约束的作业。
wifiConstraint = Constraints.Builder()
.setRequiredNetworkType(NetworkType.UNMETERED)
.build()
work_version = "2.2.0"
implementation "androidx.work:work-runtime-ktx:$project.work_version"
客户的设备似乎已连接到 WiFi 网络,但作业在 6 小时后仍未发送(已设置为 repeatInterval: 30, TimeUnit.MINUTES
)。
此 WiFi 网络是具有配置文件的企业网络。
有没有办法知道 Job 是否不满足既定约束条件,以及不满足哪个约束条件?
谢谢。
2020 年 4 月 9 日更新
WorkManager v2.4.0 alpha 01 引入了使用
从 WorkManager 请求诊断信息的能力
adb shell am broadcast -a "androidx.work.diagnostics.REQUEST_DIAGNOSTICS" -p "<your_app_package_name>".
这提供了很多有用的信息,包括:
- 过去 24 小时内完成的工作请求数。
- 当前 运行 的工作请求。
- 计划的工作请求。 (aosp/1235501)
这仅适用于调试版本。
遵循原始答案,对旧的 WorkManager 版本和发布版本仍然有效。
您无法直接在 WorkManager 中获取此信息,但是,假设此设备 运行ning 在 Android 6.0+(API level23+)上,您可以获取有关的一些信息WorkManager 使用的底层 JobScheduler API。
使用命令:
adb shell dumpsys jobscheduler
您应该能够使用此命令识别您的任务。
这将为您提供以下类别的大量输出。
- 设置
- 注册了 XX 个职位
- 连通性
- 警报
- 空闲
- 电池
- AppIdle
- 内容
- 工作经历
- 待定队列
如果您在 Android 7.1 及更高版本上进行测试,那么您可以使用以下命令强制-运行 计划作业。
adb shell cmd jobscheduler run -f PACKAGE_NAME JOB_ID
现在我在 WorkManager
上有一些使用此约束的作业。
wifiConstraint = Constraints.Builder()
.setRequiredNetworkType(NetworkType.UNMETERED)
.build()
work_version = "2.2.0"
implementation "androidx.work:work-runtime-ktx:$project.work_version"
客户的设备似乎已连接到 WiFi 网络,但作业在 6 小时后仍未发送(已设置为 repeatInterval: 30, TimeUnit.MINUTES
)。
此 WiFi 网络是具有配置文件的企业网络。
有没有办法知道 Job 是否不满足既定约束条件,以及不满足哪个约束条件?
谢谢。
2020 年 4 月 9 日更新
WorkManager v2.4.0 alpha 01 引入了使用
从 WorkManager 请求诊断信息的能力adb shell am broadcast -a "androidx.work.diagnostics.REQUEST_DIAGNOSTICS" -p "<your_app_package_name>".
这提供了很多有用的信息,包括:
- 过去 24 小时内完成的工作请求数。
- 当前 运行 的工作请求。
- 计划的工作请求。 (aosp/1235501)
这仅适用于调试版本。
遵循原始答案,对旧的 WorkManager 版本和发布版本仍然有效。
您无法直接在 WorkManager 中获取此信息,但是,假设此设备 运行ning 在 Android 6.0+(API level23+)上,您可以获取有关的一些信息WorkManager 使用的底层 JobScheduler API。
使用命令:
adb shell dumpsys jobscheduler
您应该能够使用此命令识别您的任务。
这将为您提供以下类别的大量输出。
- 设置
- 注册了 XX 个职位
- 连通性
- 警报
- 空闲
- 电池
- AppIdle
- 内容
- 工作经历
- 待定队列
如果您在 Android 7.1 及更高版本上进行测试,那么您可以使用以下命令强制-运行 计划作业。
adb shell cmd jobscheduler run -f PACKAGE_NAME JOB_ID