Geofence получает трансляцию в фоновом режиме - PullRequest
0 голосов
/ 26 мая 2020

Кажется, мне не удается настроить BroadcastReceiver для получения трансляций геозоны, пока приложение работает в фоновом режиме. Я много чего пробовал, включая создание службы переднего плана. Все работает нормально, если приложение находится на переднем плане или возвращено на передний план из фонового. BroadcastReceiver не вызывается своевременно, если приложение находится в фоновом режиме, даже при запущенной службе переднего плана, хотя иногда он вызывается через много минут. Я просмотрел много сообщений и много чего пробовал, и я не уверен, почему это не работает, но в документации, похоже, утверждается, что это должно работать, если приложение запускает службу переднего плана.

Вот как я запустите его из моего приложения,

public void startGeofenceService() {
    Intent serviceIntent = new Intent(this, GeofenceForegroundService.class);
    ContextCompat.startForegroundService(this, serviceIntent);
    startService(serviceIntent);
    bindService(serviceIntent, mConnection, Context.BIND_AUTO_CREATE);
}

Вот геозона, добавляемая из службы,

public void onCreate() {
    super.onCreate();

    createNotificationChannel();

    Notification notification = foregroundNotification();
    startForeground(1, notification);

    addGeofence();
}

Я просто использовал PendingIntent, но затем попытался зарегистрировать приемник явно

    registerReceiver(broadcastReceiver, new IntentFilter("GeofenceIntentFilter"));
    Intent intent = new Intent("GeofenceIntentFilter");
    PendingIntent pendingIntent = PendingIntent.getBroadcast(this, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT);
    final GeofencingClient geofencingClient = LocationServices.getGeofencingClient(this);
    geofencingClient.addGeofences(request, pendingIntent);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...