有没有办法知道 WorkManager 作业是否因为约束而没有执行?

阿克西尔jhtjz

现在我有一些WorkManager使用此约束的工作。

wifiConstraint = Constraints.Builder()
                .setRequiredNetworkType(NetworkType.UNMETERED)
                .build()

work_version = "2.2.0"
implementation "androidx.work:work-runtime-ktx:$project.work_version"

客户设备似乎已连接到 WiFi 网络,但作业repeatInterval: 30, TimeUnit.MINUTES在 6 小时后未派发(设置为)。

此 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 中直接获取这些信息,但是,假设此设备运行在 Android 6.0+(API 级别 23+)上,您可以获取有关 WorkManager 使用的底层 JobScheduler API 的一些信息。

使用命令:

adb shell dumpsys jobscheduler

您应该能够使用此命令识别您的任务。

这将为您提供以下类别的巨大输出。

  • 设置
  • 注册 XX 工作
  • 连通性
  • 警报
  • 空闲
  • 电池
  • 应用空闲
  • 内容
  • 工作经历
  • 等待队列

如果您在 Android 7.1 及更高版本上进行测试,则可以使用以下命令强制运行计划作业。

adb shell cmd jobscheduler run -f PACKAGE_NAME JOB_ID

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

有没有办法在 android WorkManager 中定期执行一系列工作项

有没有办法知道 xdebug 是否正在调试当前执行?

有没有办法知道MongoDB中是否有更多文档可用于分页?

有没有办法知道用户是否拥有域?

有没有办法知道手机是否有通话?

bash有没有办法知道没有$ HOME变量的主目录

有没有办法知道Python中没有索引的列表的哪个数字?

有没有办法知道是否使用了多个Spring Context?

有没有办法知道消息在响应中是否成功?

有没有办法知道计算机是否在域中,即使现在不在

有没有办法知道是否指的是akka中不存在的演员

有没有办法知道链接/脚本是否仍然挂起或失败

有没有办法让python脚本“知道”是否已通过管道传递给它?

有没有办法知道数据库是否为空?

有没有办法知道是否启用了数据保护程序?

有没有办法以编程方式知道闪亮是否正在运行?

有没有办法知道JPanel是否完成了其内容的加载?

有没有办法知道传输守护程序当前是否处于活动状态?

有没有办法知道 CPU 进程是否正在抖动?

有没有办法知道字符串某个部分的所有位置?

有没有办法知道通道缓冲区中有多少条消息?

有没有办法让我知道缓存中的所有数据?

有没有办法解决这个约束问题?

有没有办法知道 volley 将解析什么?

有没有办法知道何时从缓存中将文档与数据库同步?

有没有办法知道服务器的用户名?

有没有办法知道该方法是 Swift 中的协议实现?

有没有办法知道Axon框架何时“就绪”

有没有办法知道/告诉pdf文件中使用了哪种字体?