看来,在NetworkType.CONNECTED中安排周期性任务时使用WorkManager约束对我来说并不可靠。
一种复制方式...
安装了该应用程序的Android设备已连接到WiFi接入点。使用可丢弃数据包的MAC过滤器阻止到设备的流量。如预期的那样,设备上的网络调用开始失败,WM对其进行处理。接下来,禁用MAC过滤器以阻止流量恢复对设备的访问。人们期望任务能够恢复,但它们永远不会恢复。其他网络调用可以正常工作,但是具有网络约束的WM任务直到应用重新启动(被杀死/再次运行)后才可以运行
温度。解决方案:在WorkManager中安排任务时,放弃NetworkType.CONNECTED
的约束可以解决问题,但是即使网络中断,唤醒设备并不必要地消耗电池,您当然也会提出请求。
如果有更好的解决方法,请分享。
更新:另一个关键是要确保任何定期作业始终返回ListenableWorker.Result#success()