如何解决使用工作管理器定期安排工作
在我的 android 应用程序中,我需要每隔 5 天执行一次任务。任务是调用 API 并从服务器获取数据,即使应用未运行/终止。
我已经检查了执行此操作的潜在选项,如下所示:
-
Alarm manager + Broadcast receiver + Intentservice
- 在这种方法中,问题在于 Android 框架对 intentService 施加的限制。此外,如果设备重新启动,注册的警报将被删除。 -
WorkManager
- 这似乎是我的任务在最新的 android 版本上保证执行的更好方法,但仍然不清楚是使用PeriodicWorkRequest
还是OneTimeWorkRequest
和继续重新安排它。
请注意,在准确的时钟时间执行此任务并不重要,但它应该在每 5 天间隔后工作。
解决方法
第一个选择是更好的方法
Alarm manager + Broadcast receiver + Servcie:这里需要将服务设为带有通知的前台服务。即使应用程序终止或未运行,您的服务也将始终运行。对于重新启动,您可以使用重新启动接收器并再次设置警报。使用这种方法,服务可以运行,其中需要大量时间,比如下载多个文件,因为它可以运行直到作业完全完成。
WorkManager:WorkManager 的主要问题是所有移动制造商的行为不一致。三星等移动制造商对电池优化有限制,当应用程序未运行或终止时,WorkManager 将无法工作。在需要大量时间下载多个文件的情况下,WorkManager 不好用,因为它会在 10 分钟后终止(如果我没记错的话)
Work Manager not working when app is killed by the user. Why?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。