0

Je suis en train de travailler avec geofences dans ma demande. Jusqu'à présent, j'ai réussi et cela fonctionne parfaitement lorsque l'application est au premier plan. Je vérifie avec Android Emulator qui ont des services google play. Pour vérifier cela, je définis les paramètres de localisation et comme je l'ai dit il fonctionne très bien lorsque l'application est sur le premier plan.GeoFence Transitions n'est pas déclenchée lorsque l'application est sur fond

Mais lorsque l'application est en arrière-plan, il semble que les transitions ne sont pas déclenchées, jusqu'à ce que j'ouvrir l'application ou ouvrir l'application Google Maps.

J'ai donc essayé d'utiliser BroadcastReceiver au lieu de IntentService et je me suis inscrit le BroadcastReceiver dans le fichier manifeste Comme ceci:

<receiver android:name  = ".GeofenceReceiver" 
      android:exported = "true" 
      android:enabled = "true" 
/> 

Mais je suis toujours avoir les mêmes résultats ..

Alors, comment puis-je déclencher les transitions Geofence lorsque l'application est en arrière-plan?

Je pensais à l'aide LocationServices.FusedLocationApi.requestLocationUpdates dans un service. Donc, avec cette approche, mon application va demander des mises à jour de localisation et cela va probablement déclencher la transition geofence.

Mais probablement il consommera la batterie et c'est une mauvaise pratique. Alors, y a-t-il d'autres options?

Répondre

1

OK. Il semble donc être les nouvelles limitations d'arrière-plan Android O en raison de problèmes de batterie. Dans Android 8, ils disposent de "nouvelles règles" sur les processus d'arrière-plan (services et etc.), afin de réduire la consommation de la batterie. Dans Android 8, lorsque l'application n'est pas au premier plan (par exemple, l'utilisateur clique sur le bouton Accueil), vos services seront probablement supprimés même s'ils sont des services d'arrière-plan, au cas où aucun composant ne serait associé à votre application.

Tout fonctionnera bien si votre système d'appareil est Android 7 et que vous avez ciblé votre application pour Android 7 et inférieure.

En ce qui concerne les mises à jour de localisation, afin d'économiser la consommation de la batterie, les mises à jour se produira plusieurs fois par heure.

Ils suggèrent d'utiliser le service de premier plan afin que votre application sera toujours considéré comme premier plan.

see this link