2017-10-13 160 views
1

我有一个Android应用程序,它有一个后台服务,每5分钟工作一次。它打开GPS并与起始位置进行比较,如果您正在旅行(检查速度和距离),则启动应用程序以跟踪和分析驾驶员驾驶的方式。关于在Android中运行后台执行限制的疑问Oreo

这个应用程序的工作原理和在商店中,但我将其升级到Android奥利奥,我不知道它将如何工作在这个服务政策在这个主题的背景李,我看到,Android将有一个后台服务的窗口,但我不知道我需要的服务类型将如何表现。

+0

请详细解释“每隔5分钟工作”的含义。你是否在为此使用'AlarmManager'? 'JobScheduler'?还有别的吗? – CommonsWare

+0

这是一项服务,每5分钟有一个计时器收听GPS并检查您是否在旅途中。我正在更新此代码,我将使用Firebase JobScheduler。但我的问题是Android Oreo的这种限制是如何工作的,因为我正在阅读大量的会话背景材料,每小时只能访问几次。 – danielvilha

+0

“这是一项服务,每5分钟收听一次GPS定时器” - 请不要这样做。 **只有在服务主动向用户提供价值时才运行服务**。观看时钟节拍不会主动向用户传递价值。你正在捆绑系统RAM,用户没有太多的东西,并且真的很喜欢用于其他目的。你的主要Android 8.0问题是[你不会在后台获得位置数据](https://developer.android.com/about/versions/oreo/background-location-limits.html)。 – CommonsWare

回答

1

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

+0

我已经阅读了有关JobIntentService的内容,并选择使用[Firebase](https://github.com/firebase/firebase-jobdispatcher-android)中的JobScheduler,因为它与API等级9+以后的所有Android版本兼容。 – danielvilha

+0

在旧版本中,JobIntentService使用传统的IntentService来兼容。这样你就可以盲目地依靠这个API。但对于来自Firebase的JobScheduler,您应该在所有设备上正确测试。无论如何,这是你的决定。谢谢。 –