Gcm Network Manager 周期性任务处理

GcmNetworkManager perodic task handling

我需要安排一个任务,每 24 小时运行一次,以从远程服务器获取一些小数据。 GcmNetworkManager 似乎是一个完美的候选人,因为我需要支持 sdk 15+。 (JobScheduler 只有 21 岁以上)。

我通过扩展 Application. onCreate,我创建了一个带有特定标签的 PeriodicTask 并调用了 .setUpdateCurrent(false)(所以第一个被安排了,后续任务应该被忽略,因为他们不应更新现有任务)。

在我阅读的文档中

Important: When Google Play Services or the client app is updated, all scheduled tasks will be removed. GcmNetworkManager invokes the client app’s onInitializeTasks(). Override this function to reschedule necessary tasks.

在我的场景中,它应该无关紧要,因为应用程序的 onCreate 我总是在创建更新任务。有没有比我现在做的更好的方法? (我也希望有一种方法可以检查是否有给定标签的待定周期性任务)

除非您正在 BroadcastReceiver 中监听 ACTION_MY_PACKAGE_REPLACED(并在那里安排您的任务),否则您仍应覆盖 onInitializeTasks() 以创建相同的 PeriodicTask .否则,在 Google Play Store 更新您的应用程序与用户手动 运行 更新您的应用程序之间可能会有一段时间,您没有安排定期任务。