【问题标题】:Doubts about running the background execution limit in Android Oreo关于在Android Oreo中运行后台执行限制的疑惑
【发布时间】:2017-10-13 19:52:52
【问题描述】:

我有一个具有后台服务的 Android 应用程序,该服务每 5 分钟运行一次。它打开 GPS 并与起始位置进行比较,如果您正在旅行(检查速度和距离),启动应用程序以跟踪和分析驾驶员的驾驶情况。

这个应用程序可以运行并且在商店中,但是我正在将它升级到 Android Oreo,我不确定它如何在 SO 背景中运行这个服务策略 Li 关于这个主题,我看到 Android 会有一个窗口后台服务在哪里,但我不知道我需要的服务会如何表现。

【问题讨论】:

  • 请详细解释“每5分钟工作一次”是什么意思。您为此使用AlarmManager 吗? JobScheduler?还有什么?
  • 这是一项服务,每 5 分钟有一个计时器来收听 GPS 并检查您是否正在旅行。我正在更新此代码,我将使用 Firebase JobScheduler。但我的问题是 Android Oreo 的这种限制将如何发挥作用,因为我正在阅读很多谈话材料,这些材料每小时只允许后台访问几次。
  • “这是一项每 5 分钟有一个计时器来收听 GPS 的服务”——请不要这样做。 只有在主动向用户提供价值时才运行服务。看着时钟滴答声并没有积极地为用户提供价值。您正在占用用户没有太多的系统 RAM,并且非常希望将其用于其他目的。您的主要 Android 8.0 问题是 you will not get location data very much in the background
  • 其实我已经打破了这个项目来更新和重组,所以我会改变整个实现。我阅读了您传递给我的关于 Android Oreo 上的背景位置限制的链接,我认为获得新位置服务的最佳方法是使用 GeofencingClient。当设备离开该位置时,它会检查它是否是一次旅行,并开始在前台捕获用于旅行评估的数据。

标签: android location android-service android-8.0-oreo


【解决方案1】:

您可以使用支持库的 JobIntentService 来替换意图服务。 https://developer.android.com/reference/android/support/v4/app/JobIntentService.html

【讨论】:

  • 我已经阅读了 JobIntentService 并选择使用来自Firebase 的 JobScheduler,因为它兼容自 API 级别 9+ 以来的所有 Android 版本。
  • 在旧版本中,JobIntentService 使用传统的 IntentService 来实现兼容性。这样你就可以盲目依赖这个API。但是对于来自 firebase 的 JobScheduler,您应该在所有设备上进行适当的测试。无论如何,这是你的决定。谢谢。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-12-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多