onLocationChanged вызывается слишком поздно, когда мое приложение находится в фоновом режиме - PullRequest
0 голосов
/ 05 января 2019

Я получаю обновления местоположения в службе. OnLocationChange вызывается в течение нескольких секунд, когда мое приложение находится на переднем плане. Но когда он в фоновом режиме, он вызывается через несколько минут .. В чем проблема? и какое решение? Я не прекращаю свою службу, отправляясь в фоновом режиме.

1 Ответ

0 голосов
/ 06 января 2019

Я нашел проблему. Android добавил ограничения на обновления местоположения с 8.0 здесь :

«В целях снижения энергопотребления Android 8.0 (уровень API 26) ограничивает частоту, с которой фоновые приложения могут получать текущее местоположение пользователя. Приложения могут получать обновления местоположения только несколько раз в час».

Решение: вам нужно запустить Foreground Service , для которого необходимо отобразить уведомление, например:

Intent notificationIntent = new Intent(this, ExampleActivity.class);
PendingIntent pendingIntent =
        PendingIntent.getActivity(this, 0, notificationIntent, 0);

Notification notification =
          new Notification.Builder(this, CHANNEL_DEFAULT_IMPORTANCE)
    .setContentTitle(getText(R.string.notification_title))
    .setContentText(getText(R.string.notification_message))
    .setSmallIcon(R.drawable.icon)
    .setContentIntent(pendingIntent)
    .setTicker(getText(R.string.ticker_text))
    .build();

startForeground(ONGOING_NOTIFICATION_ID, notification);
...