独特的周期性工作在一段时间后停止执行

2024-04-26

我在我的应用程序中使用 WorkManager API 实现了独特的定期工作。该工作必须每 30 分钟检查一次在线资源,并在有未读通知时显示通知。是的,我需要定期工作,因为资源是 IMAP 服务器,因此我无法使用 FCM 通知。 然而,正如我所看到的,该工作已正确安排dumpsys jobscheduler,但过了一会儿作业就停止执行了。当我跑步时dumpsys jobscheduler我读过这样的内容:

JOB #u0a360/7: aa1b828 com.mypackage.app/androidx.work.impl.background.systemjob.SystemJobService
    u0a360 tag=*job*/com.mypackage.app/androidx.work.impl.background.systemjob.SystemJobService
    Source: uid=u0a360 user=0 pkg=com.mypackage.app
    JobInfo:
      Service: com.mypackage.app/androidx.work.impl.background.systemjob.SystemJobService
      Requires: charging=false batteryNotLow=false deviceIdle=false
      Extras: mParcelledData.dataSize=180
      Minimum latency: +29m59s973ms
      Backoff: policy=1 initial=+30s0ms
      Has early constraint
    Required constraints: TIMING_DELAY [0x80000000]
    Satisfied constraints: TIMING_DELAY DEVICE_NOT_DOZING BACKGROUND_NOT_RESTRICTED [0x82400000]
    Unsatisfied constraints: WITHIN_QUOTA [0x1000000]
    Tracking: TIME QUOTA
    Implicit constraints:
      readyNotDozing: true
      readyNotRestrictedInBg: true
    Standby bucket: FREQUENT
    Base heartbeat: 0
      Deferred since: -1h47m30s949ms
    Enqueue time: -1h48m0s986ms
    Run time: earliest=-1h18m1s13ms, latest=none, original latest=none
    Last run heartbeat: 0
    Ready: false (job=false user=true !pending=true !active=true !backingup=true comp=true)

这就是问题Unsatisfied constraints: WITHIN_QUOTA [0x1000000],但不幸的是我无法找到此类错误的文档。谷歌官方给出的解释很模糊:https://developer.android.com/topic/libraries/architecture/workmanager/how-to/debugging https://developer.android.com/topic/libraries/architecture/workmanager/how-to/debugging

这就是我安排工作的方式:

if (PreferenceController.getInstance().getEmailNotificationInerval() != -1) {
    int interval = PreferenceController.getInstance().getEmailNotificationInerval();

    Constraints constraints = new Constraints.Builder().build();
    PeriodicWorkRequest emailsRequest = new PeriodicWorkRequest.Builder(CheckNewEmailWorker.class, interval, TimeUnit.SECONDS)
            .setConstraints(constraints)
            .build();
    WorkManager.getInstance(context).enqueueUniquePeriodicWork(CheckNewEmailWorker.TAG, ExistingPeriodicWorkPolicy.KEEP, emailsRequest);
}

我用一个BOOT_COMPLETED接收器在启动时启动它。

在我返回的工人中Result.success()如果一切顺利,并且Result.failure()如果引发异常(例如没有连接)。


你有未满足的约束。这就是为什么你的Worker没有被执行。

Unsatisfied constraints: WITHIN_QUOTA [0x1000000]

这通常意味着您的应用程序正在运行太多作业调度程序作业。这就是为什么你已经用完了quota。另外,你的quota是由应用程序待机 https://developer.android.com/topic/performance/appstandby你可能最终会陷入困境。

我们添加了一些文档来帮助诊断此问题:https://developer.android.com/topic/libraries/architecture/workmanager/how-to/debugging https://developer.android.com/topic/libraries/architecture/workmanager/how-to/debugging

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

独特的周期性工作在一段时间后停止执行 的相关文章

随机推荐

  • igraph (R) 中仅在根和终端顶点上添加标签?

    inst2 c 2 3 4 5 6 motherinst2 c 7 8 2 10 11 km c 20 30 40 25 60 df2 data frame inst2 motherinst2 df2 cbind df2 km g2 gra
  • 带有任意 AND 子句的动态 spring data jpa 存储库查询

    我在用着Spring data jpa repositories 需要提供不同字段的搜索功能 搜索前输入字段是可选的 我有 5 个字段EmployeeNumber Name Married Profession and DateOfBirt
  • java中如何销毁进程

    我写了下面的代码 要从 Java 应用程序运行 bat 文件 我使用 process exec 但蝙蝠有时可能会挂起 所以我需要为此过程设置一个超时 我启动一个新线程并在线程中新建一个进程 我在线程中设置超时 并在超时时杀死线程 但我发现超
  • 在 React 组件中使用绝对路径

    如何使用根目录中的绝对路径并更改根目录来导入组件 import Modal from project app src Components Modal import Main from Constants 我想要将根目录更改为我可以从 sr
  • 如何通过更新和多重选择将多个输入构建到我闪亮的应用程序中?

    我正在构建一个flex dashboard shiny应用程序与datatable并尝试建立两个输入作为此选择datatable每个选项都有一个 全部 选项 第一个问题是如何限制第二个选择 user 通过选择第一选择 team 然后 使用这
  • Javascript 生成器:理解它们

    我很确定我对生成器的理解本质上是被破坏的 所有在线资源似乎都是冲突的 这导致了极其困难和令人困惑的学习体验 据我了解 yield关键字使当前正在执行的代码块能够等待一个值而不是抛出要在回调内执行的剩余代码 因此 正如大多数教程所指出的 您可
  • URI/URL 和 String 有什么区别?

    这是出于好奇 不需要代码 我尝试使用世界上最好的搜索引擎来获取答案 但没有发现任何有价值的东西 有什么区别URI URL以及表示该 URI URL 的字符串 为什么我们必须解析它 将字符串解析成什么URI URL对字符串进行不同的处理 为什
  • 为什么 Mocha 测试用例应该是无状态的?

    这是一个常见的建议 即Mocha 测试用例不应共享状态 鉴于 Mochas 测试用例执行的强烈顺序性 我真的不理解这个建议 还有更多 我认为这很可疑 如果测试用例 即使是异步测试用例 严格地一个接一个地执行 则不存在时间竞争问题或其他不可预
  • 因登录失败 3 次而禁用帐户 [已关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 嵌套 svn 存储库

    我在存储库中有一个 项目 A 但在该项目中 我使用了一个托管在 Google Code 上的库 我的问题是 有什么办法可以让该库文件 挂钩 到 Google Code SVN 同时将我的项目放在我的存储库中 它是该库的父级 这样我就可以在决
  • 玉服务器端传递的变量在浏览器中为空

    我有一个奇怪的问题 即传递给 jade 的变量在浏览器中为空 似乎传递的变量为空 但事实并非如此 Nodejs代码 整个路由代码 exports sensorsettings function req res if req session
  • SQL Server 的国家/地区、州列表 [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 您好 在一个应用程序中 我需要列出世界上的所有国家 我们选择一个国家 则应列出与其对应的所有州 如果我选
  • 如何使用从后端检索的字符串作为Angular2中的模板?

    在 Angular2 应用程序中 我想使用 ajax 从后端检索 html 标签字符串并将其用作 Angular2 中的模板 The str I get from server by ajax is var str
  • 将绘图对象存储在列表中

    I asked this https stackoverflow com questions 1816480 generating names iteratively in r for storing plots昨天关于在对象中存储绘图的问
  • .Net 中的舍入数字到下一个 0.25 [重复]

    这个问题在这里已经有答案了 如何将小数向上 而不是向下 舍入为 0 25 1 26 gt 1 50 1 45 gt 1 50 1 15 gt 1 25 1 00 gt 1 00 1 55 gt 1 75 1 77 gt 2 00 我尝试过以
  • matplotlib 将 x 轴与缩放时自动缩放的 y 轴链接起来

    如何创建一堆具有链接 共享 x 轴的绘图 以便在缩放期间自动缩放所有 从属 绘图的 y 轴 例如 import matplotlib pyplot as plt fig plt figure ax1 fig add subplot 211
  • Firestore Flutter 选择不等于和不在[重复]中的位置

    这个问题在这里已经有答案了 是否可以在 flutter firestore 中 选择不等于的地方 类似于 SQL 的东西 SELECT FROM tbl WHERE id 2 选择不在哪里 类似于 SQL 的东西 SELECT FROM t
  • 如何在 Python 中让两只乌龟同时绘图?

    如何让两只乌龟同时画画 我知道如何让海龟画画以及如何画两只或更多 但我不知道如何让它们同时画画 请帮忙 这是使用计时器事件的简约示例 import turtle t1 turtle Turtle shape turtle t2 turtle
  • 如何获取Android股票投资组合中的Web应用程序每10秒NSE市场的股票价格?

    我正在开发股票投资组合的 Android 项目 我想获取每 10 秒运行股票市场的股票价格 以便我可以直接通过 Android 手机进行交易 所以如果你知道的话请帮助我 你的问题有很多变量 您需要以多快的速度访问库存 数据需要有多准确 您正
  • 独特的周期性工作在一段时间后停止执行

    我在我的应用程序中使用 WorkManager API 实现了独特的定期工作 该工作必须每 30 分钟检查一次在线资源 并在有未读通知时显示通知 是的 我需要定期工作 因为资源是 IMAP 服务器 因此我无法使用 FCM 通知 然而 正如我