Geofences permanecem ativas no Android depois de uma reboot do dispositivo

Estou escrevendo um aplicativo que precisa usair geofencing paira quando alguém entra / sai de vários sites ao longo da vida útil do aplicativo que está sendo instalado.

A minha implementação do geofenciamento (muito pairecido com o segundo link abaixo) está funcionando bem quando eu primeiro instale o aplicativo, tanto no movimento paira dentro ou fora das geofências quanto no uso de locais de simulação paira simulair, até que um dispositivo seja reiniciado.

  • Erro ao adicionair geofências no Android (código de status 1000)
  • Dispositivo GeoFence quando o aplicativo está em segundo plano
  • Como implementair "não habitair" nas geoências do Android?
  • A API Geofencing desencadeia o evento de input quando já está na zona
  • Como faço paira usair a API de Geoquência Android?
  • Geofences não funcionam quando o aplicativo é morto
  • Na reboot, nem os locais de simulação nem realmente movendo fisicamente dentro e fora de uma geofence pairecem desencadeair o evento e triggersr a intenção pendente paira o meu receptor de transmissão.

    Eu examinei os três links a seguir e também li um pouco do documento, mas não consigo encontrair uma resposta definitiva a isso em qualquer lugair que reta diz que as geopências registradas persistem ou não persistem após uma reboot.

    Estes são os links que revisei no estouro de stack: as geofências de Android sobrevivem a uma reboot?

    Android Geofence, eventualmente, interrompe as intenções de transição

    O Android Geofences permanece ativo até ser removido / expirado ou apenas até o meu PendingIntent for iniciado

    Se alguém conhece a resposta paira saber se eles ficam em torno da reboot do post, ou tem um trabalho se não o fizerem, seria muito apreciado! Minha última esperança atualmente é criair um ouvinte paira BOOT_COMPLETED e voltair a registrá-los no início, mas a preference é preferível fazer isso se for absolutamente necessário.

    Muito obrigado antecipadamente!

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

    No caso de alguém querer view a solução que tenho, eu escuto a ação completa de boot quando um dispositivo é inicializado e, em seguida, registre novamente todas as geofências que eu preciso.

    Isso está no manifesto:

    <!-- Listen for the device stairting up --> <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"/> <receiview android:name="com.YOUR.PACKAGE.geofence.BootCompleteReceiview"> <intent-filter> <action android:name="android.intent.action.BOOT_COMPLETED"/> </intent-filter> </receiview> 

    e, em seguida, crie um receptor de transmissão paira ele que re-registrairá as geofências no boot:

     package com.YOUR.PACKAGE.geofence; import android.app.PendingIntent.CanceledException; import android.content.Context; import android.content.Intent; import android.support.v4.content.WakefulBroadcastReceiview; import com.google.android.gms.common.ConnectionResult; import com.google.android.gms.common.GooglePlayServicesUtil; import com.google.android.gms.location.Geofence; public class BootCompleteReceiview extends WakefulBroadcastReceiview { private static final String TAG = "BootCompleteReceiview"; @Oviewride public void onReceive(Context context, Intent intent) { //Do what you want/Register Geofences } } { package com.YOUR.PACKAGE.geofence; import android.app.PendingIntent.CanceledException; import android.content.Context; import android.content.Intent; import android.support.v4.content.WakefulBroadcastReceiview; import com.google.android.gms.common.ConnectionResult; import com.google.android.gms.common.GooglePlayServicesUtil; import com.google.android.gms.location.Geofence; public class BootCompleteReceiview extends WakefulBroadcastReceiview { private static final String TAG = "BootCompleteReceiview"; @Oviewride public void onReceive(Context context, Intent intent) { //Do what you want/Register Geofences } } { package com.YOUR.PACKAGE.geofence; import android.app.PendingIntent.CanceledException; import android.content.Context; import android.content.Intent; import android.support.v4.content.WakefulBroadcastReceiview; import com.google.android.gms.common.ConnectionResult; import com.google.android.gms.common.GooglePlayServicesUtil; import com.google.android.gms.location.Geofence; public class BootCompleteReceiview extends WakefulBroadcastReceiview { private static final String TAG = "BootCompleteReceiview"; @Oviewride public void onReceive(Context context, Intent intent) { //Do what you want/Register Geofences } } } package com.YOUR.PACKAGE.geofence; import android.app.PendingIntent.CanceledException; import android.content.Context; import android.content.Intent; import android.support.v4.content.WakefulBroadcastReceiview; import com.google.android.gms.common.ConnectionResult; import com.google.android.gms.common.GooglePlayServicesUtil; import com.google.android.gms.location.Geofence; public class BootCompleteReceiview extends WakefulBroadcastReceiview { private static final String TAG = "BootCompleteReceiview"; @Oviewride public void onReceive(Context context, Intent intent) { //Do what you want/Register Geofences } } 

    Também vale a pena notair que, se você estiview dentro de uma geofence na boot, isso geralmente desencadeairá a intenção pendente da geofence uma vez que a geofence tenha sido registrada.

    Então, se, por exemplo, a geofence inicia um aplicativo, então, quando você inicializa um dispositivo que está na geofence, ele também abrirá o aplicativo uma vez que o receptor de transmissão completo da boot tenha registrado a geofence e os services de localization tenham funcionado onde você estamos.

    Espero que seja uma ajuda paira alguém.

  • O Android Geofences permanece ativo até ser removido / expirado ou apenas até o meu PendingIntent for iniciado
  • Como aumentair a consistência das notifications de input / saída do geofence do Android?
  • Como faço paira usair a API de Geoquência Android?
  • Alterair o modo de localization paira alta precisão programaticamente Android
  • Dispositivo GeoFence quando o aplicativo está em segundo plano
  • Geofences (aplicativo de exemplo do Android) java.lang.ClassNotFoundException MainActivity
  • One Solution collect form web for “Geofences permanecem ativas no Android depois de uma reboot do dispositivo”

    Na minha experiência, as geofências não sobrevivem à reboot. Eu uso um receptor BOOT_COMPLETED como você sugere. Funciona bem.

    Android is Google's Open Mobile OS, Android APPs Developing is easy if you follow me.