Czy Geofences pozostają aktywne w Androidzie po ponownym uruchomieniu urządzenia

Piszę aplikację, która musi korzystać z funkcji geofencing, gdy ktoś wchodzi / wychodzi z wielu witryn przez cały okres instalacji aplikacji.

Moja implementacja geofencing (bardzo podobna do drugiego linku poniżej) działa dobrze, gdy po raz pierwszy instaluję aplikację, zarówno podczas wprowadzania / wyprowadzania geofence, jak i podczas korzystania z pozorowanych lokalizacji do symulacji, aż do ponownego uruchomienia urządzenia.

Po ponownym uruchomieniu komputera ani pozorowane lokalizacje, ani fizycznie poruszające się i wychodzące z geofence nie wydają się wyzwalać zdarzenia i odpalać oczekujące intencje do mojego odbiornika.

Spojrzałem na trzy poniższe linki i przeczytałem całkiem sporo tego dokumentu, ale nie mogę znaleźć definitywnej odpowiedzi na to pytanie, gdzie to proste mówi, że zarejestrowane geofence pozostają lub nie utrzymują się po restarcie.

Oto linki, które przejrzałem w przepełnieniu stosu:Czy geofence systemu Android przetrwały ponowne uruchomienie?

Android Geofence w końcu przestaje uzyskiwać zamiany

Czy Android Geofences pozostają aktywne do momentu usunięcia / wygaśnięcia lub tylko do momentu uruchomienia mojego PendingIntent

Gdyby ktoś znał odpowiedź na pytanie, czy pozostanie w pobliżu po ponownym uruchomieniu komputera lub obejdzie się, jeśli tego nie zrobi, byłoby to bardzo mile widziane! Moją ostatnią nadzieją jest stworzenie słuchacza BOOT_COMPLETED i ponowne zarejestrowanie go przy starcie, ale wolę to robić tylko, jeśli jest to absolutnie konieczne.

Z góry dziękuję!

Edytuj: Chociaż nie znalazłem ostatecznej (na piśmie) odpowiedzi, jestem całkiem pewien, co napisał pan TonyC, i zdecydowałem się na to rozwiązanie. Wielkie dzięki TonyC!

W przypadku, gdy ktoś chce zobaczyć rozwiązanie, które posiadam, słucham akcji rozruchowej po uruchomieniu urządzenia, a następnie ponownie rejestruję wszystkie potrzebne strefy geofence.

To jest w manifeście:

<!-- Listen for the device starting up -->
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"/>

<receiver android:name="com.YOUR.PACKAGE.geofence.BootCompleteReceiver">
    <intent-filter>
        <action android:name="android.intent.action.BOOT_COMPLETED"/>
    </intent-filter>
</receiver>

a następnie utwórz dla niego odbiornik rozgłoszeniowy, który ponownie zarejestruje geofence na starcie:

package com.YOUR.PACKAGE.geofence;

import android.app.PendingIntent.CanceledException;
import android.content.Context;
import android.content.Intent;
import android.support.v4.content.WakefulBroadcastReceiver;

import com.google.android.gms.common.ConnectionResult;
import com.google.android.gms.common.GooglePlayServicesUtil;
import com.google.android.gms.location.Geofence;

public class BootCompleteReceiver extends WakefulBroadcastReceiver
{
    private static final String TAG = "BootCompleteReceiver";

    @Override
    public void onReceive(Context context, Intent intent)
    {
        //Do what you want/Register Geofences
    }
}

Warto również zauważyć, że jeśli znajdujesz się w strefie geofence podczas rozruchu, zwykle powoduje to oczekiwanie na geofence po zarejestrowaniu strefy geofence.

Jeśli więc na przykład geofence uruchomi aplikację, to po uruchomieniu urządzenia, które akurat znajduje się w strefie geofence, otworzy ona również aplikację, gdy kompletny odbiornik nadawczy zarejestruje strefę geofence, a usługi lokalizacyjne wyszły tam, gdzie są

Mam nadzieję, że to komuś pomoc.

questionAnswers(2)

yourAnswerToTheQuestion