【问题标题】:Schedule a work for a periodic intervals using Work manager使用工作管理器定期安排工作
【发布时间】:2021-05-07 11:27:57
【问题描述】:

在我的 android 应用程序中,我有一个要求,我需要每隔 5 天执行一次任务。任务是调用 API 并从服务器获取数据,即使应用程序没有运行/终止。

我已经检查了执行此操作的潜在选项,如下所示:

  1. Alarm manager + Broadcast receiver + Intentservice - 在这种方法中,问题在于 Android 框架对 intentService 施加的限制。此外,如果设备重新启动,注册的警报将被删除。

  2. WorkManager - 对于我的任务来说,这似乎是一种更好的方法,可以保证在最新的 android 版本上执行,但仍然不清楚是使用 PeriodicWorkRequest 还是 OneTimeWorkRequest 并继续重新安排它。

请注意,在准确的时钟时间执行此任务并不重要,但它应该在每 5 天的间隔后工作。

【问题讨论】:

    标签: android alarmmanager android-workmanager


    【解决方案1】:

    第一个选项是更好的方法

    报警管理器 + 广播接收器 + Servcie:这里需要将服务设置为带有通知的前台服务。即使应用程序终止或未运行,您的服务也将始终运行。对于重新启动,您可以拥有一个重新启动接收器并再次设置警报。使用这种方法,服务可以在需要大量时间的情况下运行,比如下载多个文件,因为它可以运行直到作业完全完成。

    WorkManager:WorkManager 的主要问题是所有移动制造商的行为不一致。三星等移动制造商对电池优化有限制,当应用程序未运行或终止时,WorkManager 将无法工作。 WorkManager 不适用于需要大量时间的情况,比如下载多个文件,因为它会在 10 分钟后终止(如果没有错的话)

    Work Manager not working when app is killed by the user. Why?

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-05-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多