【发布时间】: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