Sto pensando di avere due allarmi separati per raccogliere i dati di posizione di un utente ogni ora, uno che si spegne ogni 59 minuti per "connettere" il client e un secondo per ottenere effettivamente la posizione e successivamente disconnettere il client.Qual è l'approccio più efficiente della batteria dell'utilizzo di LocationClient per ottenere periodicamente aggiornamenti?
In termini di durata della batteria, c'è qualcos'altro che dovrei prendere in considerazione se ottenere la posizione dell'utente sarà il principale svuotamento dell'app? Oppure esiste un approccio diverso all'utilizzo di due allarmi? Inizialmente avevo solo un singolo allarme, ma l'esecuzione di un controllo (! MLocationClient.isConnected) e la connessione non danno al client abbastanza tempo per connettersi.
Grazie per la vostra comprensione.
I due allarmi sarebbe andato fuori qualcosa di simile a questo:
private int PERIODIC_UPDATE = 60000*60; //gets location and disconnects every hour
private int PERIODIC_RECONNECTION_UPDATE = 60000*59; //connects 1 minute before getLocation call
Timer toReconnect = new Timer();
toReconnect.schedule(new TimerTask() {
@Override
public void run() {
mLocationClient.connect();
}
}, 5000, PERIODIC_RECONNECTION_UPDATE);
Timer theTimer = new Timer();
theTimer.schedule(new TimerTask(){
@Override
public void run() {
try {
if(!mLocationClient.isConnected()) {
mLocationClient.connect();
//This will not have much affect because cannot so quickly, will remove.
}
Location theLocation = mLocationClient.getLastLocation();
if(theLocation!=null) {
checkPostLocation(theLocation);
mLocationClient.disconnect();
}
} catch (Exception e) {
e.printStackTrace();
}
}}, 5000, PERIODIC_UPDATE);
Il modo più efficace per la batteria è disabilitare tutte le app Messenger e lasciare spento il display. Quindi è possibile registrare il GPS una volta al secondo per più di 8 ore. – AlexWien
@ jsc123 Si noti che l'utilizzo del provider di posizioni con fusibile con "getLastLocation()" non garantisce una posizione GPS: è possibile ottenere una posizione basata principalmente su sensori, WiFi o connessione cellulare. Inoltre, non stai forzando necessariamente una nuova posizione, quindi potresti ottenere la stessa posizione che hai ottenuto l'ultima volta se nessun'altra app, inclusi i Servizi Google, ha richiesto una posizione aggiornata. –
@SeanBarbeau, la mia implementazione non sarebbe la migliore se cerco sempre di ottenere la posizione più accurata periodicamente, anche se è uno scarico più grande? – NumenorForLife