Do Geofences permanece activo en android después de reiniciar el dispositivo

Estoy escribiendo una aplicación que necesita usar geofencing para cuando alguien entre / salga de varios sitios a lo largo de la vida de la aplicación que se está instalando.

Mi implementación de geofencing (muy similar al segundo vínculo a continuación) funciona correctamente cuando instalo la aplicación, tanto cuando se mueve dentro / fuera de las geofencias y cuando se usan localizaciones simuladas para simular, hasta que se reinicie un dispositivo.

Al reiniciar, ni las localizaciones de simulación ni los movimientos físicos de entrada y salida de un geofence parecen activar el evento y disparar la intención pendiente a mi receptor de difusión.

He examinado los siguientes tres enlaces y también he leído un poco de los documentos, pero no puedo encontrar una respuesta definitiva a esto en cualquier lugar que hacia arriba dice que las geofencias registradas persisten o no persisten después de un reinicio.

Estos son los enlaces que he revisado sobre desbordamiento de pila: ¿Las geofencias de Android sobreviven a un reinicio?

Android Geofence eventualmente deja de tener intenciones de transición

Hacer que Android Geofences permanezca activo hasta que se haya eliminado / caducado o solo hasta que se inicie mi PendingIntent

Si alguien sabe que la respuesta a si se quedan alrededor de post reboot, o tiene un trabajo alrededor si no lo hacen, sería muy apreciado! Mi última esperanza actualmente es crear un oyente para BOOT_COMPLETED y volver a registrarlos en el arranque, pero prefiero sólo hacer esto si es absolutamente necesario.

¡Muchas gracias por adelantado!

Edit: Aunque no he encontrado una respuesta definitiva (por escrito), estoy bastante seguro de lo que el Sr. TonyC publicado es correcto, y han optado por esa solución. Muchas gracias TonyC!

En caso de que alguien quiera ver la solución que tengo, escucho la acción de arranque completo cuando un dispositivo se inicia, y luego volver a registrar todas las geofences que necesito.

Esto está en el manifiesto:

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

Y luego crear un receptor de difusión para él que volverá a registrar las geofences en el arranque:

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

También vale la pena señalar que si usted está dentro de una geofence en el arranque, esto usualmente disparará la intención pendiente de geofence una vez que se haya registrado la geofence.

Así que si por ejemplo, el geofence inicia una aplicación, entonces cuando arrancas un dispositivo que pasa a estar en el geofence, también abrirá la aplicación una vez que el receptor de difusión completo de arranque haya registrado el geofence, y los servicios de localización ha funcionado donde son.

Espero que sea algo de ayuda para alguien.

FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.