Ho un'app che non richiede quasi nessuna interazione da parte dell'utente, ma richiede Geofences. Posso eseguire tutto questo all'interno di un servizio in background?Posso eseguire Android GeoFencing interamente all'interno di un servizio in background?
Ci sarà un'attività al primo avvio del servizio. Questa attività avvierà un servizio e registrerà un BroadcastReceiver per BOOT_COMPLETED, quindi il servizio inizierà all'avvio. È improbabile che questa attività venga mai eseguita di nuovo.
Il servizio imposterà periodicamente un allarme che provocherà a un IntentService di scaricare un elenco di posizioni dalla rete. In questo IntentService verrà quindi impostato Geofences in tali posizioni e verrà creato PendingIntents che verrà attivato quando verranno raggiunte le posizioni. A loro volta, quei PendingIntents causeranno un altro IntentService a prendere qualche azione.
Tutto ciò deve avvenire in background, senza alcuna interazione da parte dell'utente a parte l'avvio dell'attività per la prima volta dopo l'installazione. Pertanto, l'attività non interagirà con LocationClient o con qualsiasi servizio di localizzazione.
In realtà ho questo set up con proximityAlerts, ma desidero passare alla nuova API Geofencing per motivi di durata della batteria. Tuttavia, ho sentito che ci possono essere alcuni problemi con l'utilizzo di LocationClient all'interno di un servizio. In particolare, quello che ho sentito (mi dispiace, senza riferimenti, solo per sentito dire sinistri):
- posizione client si basa sulla disponibilità ui per la gestione
- quando viene chiamato dal thread in background errore, LocationClient.connect() presuppone che viene chiamato dal thread ui principale (o altro thread con looper evento), quindi la callback della connessione non viene mai chiamata, se chiamiamo questo metodo dal servizio in esecuzione in thread di sfondo
Quando ho indagato, non riesco a vedere qualsiasi motivo per cui questo sarebbe il caso, o perché avrebbe smesso di fare quello che volevo. Speravo che sarebbe stato quasi un rimpiazzo sostitutivo per proximityAlerts ...
Qualcuno può far luce sulle cose qui?
Non sono riuscito a trovare e API per elencare Geofences, e mi piacerebbe avere uno pure. Sono anche preoccupato che il mio sqlite db e l'attuale lista di recinti registrati non siano sincronizzati ... –