As Geofences permanecem ativas no android após a reinicialização do dispositivo

Estou escrevendo um aplicativo que precisa usar geofencing para quando alguém entra / sai de vários sites durante a vida útil do aplicativo que está sendo instalado.

Minha implementação de geofencing (muito semelhante ao segundo link abaixo) está tudo funcionando bem quando eu instalo o aplicativo, tanto quando me movo dentro / fora das geofences quanto quando uso posições falsas para simulá-lo, até que um dispositivo seja reinicializado.

Na reinicialização, nem os locais de simulação nem a movimentação física de entrada e saída de uma geocerca parecem acionar o evento e disparar a intenção pendente para o meu receptor de transmissão.

Eu olhei para os três links a seguir e também li um pouco do documento, mas não consigo encontrar uma resposta definitiva para isso em qualquer lugar que diz que as geofences registradas persistem ou não persistem após uma reinicialização.

Estes são os links que analisei no estouro de pilha:As cercas geográficas do Android estão sobrevivendo a uma reinicialização?

Geofence Android acaba por deixar de ter intenções de transição

As Geofences do Android permanecem ativas até serem removidas / expiradas ou somente até que meu PendingIntent seja lançado

Se, por acaso, alguém souber a resposta para saber se eles estão por perto após o reinício, ou se há algum problema, isso não seria muito apreciado! Minha última esperança atualmente é criar um ouvinte para BOOT_COMPLETED e registrá-los novamente na inicialização, mas eu prefiro apenas fazer isso se for absolutamente necessário.

Muito obrigado antecipadamente!

Edit: Embora eu não tenha encontrado uma resposta definitiva (por escrito), tenho certeza que o que o Sr. TonyC postou está correto, e optou por essa solução. Muito obrigado TonyC!

No caso de alguém querer ver a solução que tenho, eu ouço a ação de inicialização completa quando um dispositivo é inicializado e, em seguida, registro novamente todas as geofences que eu preciso.

Isso está no manifesto:

<!-- 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>

e então crie um receptor de broadcast para ele que registrará novamente as geofences na inicialização:

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
    }
}

Também vale a pena notar que, se você estiver dentro de uma geocerca na inicialização, isso geralmente acionará a intenção pendente da geocence assim que a geocerca tiver sido registrada.

Portanto, se por exemplo, a geocerca começa um aplicativo, quando você inicializa um dispositivo que está na geocerca, ele também abre o aplicativo, assim que o receptor de transmissão completo de inicialização registra o perímetro geográfico e os serviços de localização funcionam onde você está.

Espero que seja alguma ajuda para alguém.

questionAnswers(2)

yourAnswerToTheQuestion