Причина:
Чтобы сохранить заряд батареи, работу пользователя и работоспособность системы, фоновые приложения получают обновления местоположения реже при использовании на устройстве под управлением Android 8.0.Это изменение поведения влияет на все приложения, получающие обновления местоположения, включая сервисы Google Play.
Эти изменения влияют на следующие API:
- Поставщик объединенных локаций (FLP)
- Геозона
- Измерения GNSS
- Диспетчер местоположения
- Диспетчер Wi-Fi
Решение:
В Android 8.0 появился новый метод, который называется Context.StartForegroundService () , на стойке регистрации, чтобы запустить новую службу.После того, как система создаст приложение-службу, у вас будет пять секунд, чтобы вызвать метод service startForeground
visible () для отображения уведомления о новой службе.Если приложение не будет вызвано в течение этого срока
StartForeground ()
, то система остановит это приложение для обслуживания и выписки ANR.
Intent service = new Intent(TheApplication.getInstance().getApplicationContext(), MyBackgroundService.class);
service.putExtra("startType", 1);
if (Build.VERSION.SDK_INT >= 26) {
TheApplication.getInstance().startForegroundService(service);
} else {
TheApplication.getInstance().startService(service);
}