Zastanawiam się nad dwoma osobnymi alarmami, które gromadzą dane o lokalizacji użytkownika co godzinę, jedną, która znika co 59 minut, aby "połączyć" klienta, a druga, aby uzyskać lokalizację, a następnie odłączyć klienta.Jaki jest najbardziej wydajny pod względem zużycia baterii sposób korzystania z usługi LocationClient w celu okresowego pobierania aktualizacji?
Jeśli chodzi o czas pracy na baterii, czy jest coś jeszcze, co powinienem zrobić, jeśli lokalizacja użytkownika będzie głównym odpływem aplikacji? Czy istnieje inne podejście do posiadania dwóch alarmów? Początkowo miałem tylko jeden alarm, ale wykonanie połączenia (! MLocationClient.isConnected), a następnie połączenie nie daje klientowi czasu na nawiązanie połączenia.
Dzięki za twój wgląd.
Dwa alarmy pójdzie się coś takiego:
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);
Najbardziej korzystny sposób na baterię to wyłączenie wszystkich aplikacji Messenger i pozostawienie ekranu wyłączonego. Następnie możesz nagrywać GPS raz na sekundę przez ponad 8 godzin. – AlexWien
@ jsc123 Należy pamiętać, że używanie Fused Location Provider z "getLastLocation()" nie gwarantuje lokalizacji GPS - możesz uzyskać lokalizację opartą głównie na czujnikach, sieci Wi-Fi lub połączeniu komórkowym. Poza tym niekoniecznie wymuszasz nową lokalizację, więc możesz uzyskać tę samą lokalizację, z której ostatnio korzystałeś, jeśli żadna inna aplikacja, w tym Usługi Google, nie poprosiła o zaktualizowaną lokalizację. –
@SeanBarbeau, czy moja implementacja nie byłaby najlepsza, jeśli zawsze staram się okresowo uzyskać najdokładniejszą lokalizację, mimo że jest to większy drenaż? – NumenorForLife