【问题标题】:Scheduling Tasks at exact time in Android Oreo and above在 Android Oreo 及更高版本中在准确时间安排任务
【发布时间】:2020-04-16 18:31:13
【问题描述】:

有没有办法在 Android(奥利奥及以上)上安排任务?我想安排位置跟踪开始/停止事件。假设在每天上午 9:00 开始位置跟踪并在每天下午 6:00 停止。请提出解决方案。警报管理器能帮我解决这个问题吗?

【问题讨论】:

  • 为什么不能使用JobSchedulerWorkManager
  • 据我所知,他们不会在确切的时间工作。他们会工作吗?
  • 您可以使用OneTimeWorkRequest使其工作

标签: android location scheduled-tasks alarmmanager


【解决方案1】:

如果它应该是上午 9 点/下午 6 点,AlarmManager 是您的朋友,因为它可以在准确的时间触发警报https://developer.android.com/reference/android/app/AlarmManager.html#setExactAndAllowWhileIdle(int,%20long,%20android.app.PendingIntent)

随着Doze 模式的引入以及JobSchedulerWorkManager 上的权限级别更改可能会延迟15 分钟,但它更加灵活,并且计划的作业会在系统重新启动后持续存在。

回到 Android 优化,你应该考虑到你不能再有后台服务定位,在实现它时要注意你是如何获得它的,因为它可能会很快耗尽电池。

参考:https://developer.android.com/about/versions/oreo/background-location-limits

希望有帮助!

【讨论】:

    【解决方案2】:

    遇到了类似的问题。对我来说最好的解决方案是实现 Firebase 消息传递并向设备发送数据通知,然后在 onMessageReceived(RemoteMessage remoteMessage) 中触发一些操作(例如获取位置并将其发送到服务器)。 要从上午 9:00 到下午 06:00 安排它,我会使用一个 cron 作业,它会触发 firebase 中的消息。奖励功能 - 您可以远程更改/暂停/开始更新(无需应用更新)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-12-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多