微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在 Android 上执行周期性任务的最可靠方法

如何解决在 Android 上执行周期性任务的最可靠方法

在我的应用中,我有周期性任务,需要以高可靠性定期执行。

目前我正在使用 WorkManager 并观察到任务有时会超出计划执行。

文档含糊地提到 api 是“意识到电池寿命”,我认为这可能是原因。

无论如何,我尝试在我的应用程序设置中禁用“电池优化”,但仍然观察到我在我的应用程序中无法容忍的延迟。

那么,问题来了:我可以用来安排定期(15-30 分钟)任务的最可靠的 api 是什么,如果有一些设置用户可能会更改以提高按计划执行的任务的可靠性?

可靠性是这里的主要焦点,在我的用例中可能会牺牲电池寿命。

Ps:我的主要目标是 Android N,在 Motorola Moto C 上测试。

解决方法

没有什么可靠的。您使用的是安卓。每个供应商都做自己的事情。请检查:

https://dontkillmyapp.com/

您“可以”使用推送通知,但它需要具有高优先级,这意味着用户交互。如果用户不互动——很快你就会受到限制。如果您使用低优先级 - 您的请求将传递给 WorkManager - 这样您就会回到起点。

至少您可以尝试检查作业调度程序的转储,看看是什么限制了您。

https://developer.android.com/topic/libraries/architecture/workmanager/how-to/debugging#use-alb-shell0dumpsys-jobscheduler

检查:

  Required constraints: TIMING_DELAY CONNECTIVITY [0x90000000]
  Satisfied constraints: DEVICE_NOT_DOZING BACKGROUND_NOT_RESTRICTED WITHIN_QUOTA [0x3400000]
  Unsatisfied constraints: TIMING_DELAY CONNECTIVITY [0x90000000]

您关心未满足的约束。大多数都是不言自明的,除了 - QUOTA 这意味着您在 24 小时内被执行了太多次。和连接性 - 除了没有处于正确的网络状态之外,当您在 24 小时内使用过多网络时,您也会看到这一点。请在此处查看:

https://developer.android.com/topic/performance/power/power-details

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。