In unserer App verwendeten wir den Fused Location Provider (FLP), um den Standort zu verfolgen. Wir haben festgestellt, dass die App gelegentlich in einen Zustand versetzt werden kann, in dem der Standort-Callback nicht mehr aufgerufen wird. Die betreffende App wird hauptsächlich auf zwei Tablets verwendet (Nexus 7 und LG G-Pad 8.3). Wir haben festgestellt, dass das Problem auf beiden Geräten auftritt. Im Allgemeinen scheint das Zurücksetzen des Geräts das Problem zu beheben. Wir glauben, dass wir den meisten Best Practices für die Verwendung des FLP folgen. Aber nur für den Fall, dass wir diesen Beispielcode zusammenstellen, der zeigt, wie wir das FLP verwenden.Fused Location Provider - onLocationChanged hört auf, sich anzurufen
Holen Sie sich ein Google-API-Client und rufen Sie an:
m_googleApiClient = builder
.addConnectionCallbacks(this)
.addOnConnectionFailedListener(this)
.addApi(LocationServices.API)
.build();
m_googleApiClient.connect()
Sobald wir beginnen verbunden Standort Rückrufe hören:
@Override
public void onConnected(Bundle bundle) {
m_fusedLocationProviderApi.requestLocationUpdates(m_googleApiClient, m_locationRequest, this);
}
Die Lage Anfrage wie folgt aussieht:
LocationRequest locationRequest = LocationRequest.create();
locationRequest.setPriority(LocationRequest.PRIORITY_HIGH_ACCURACY);
locationRequest.setInterval(UPDATE_INTERVAL_IN_MILLISECONDS);
locationRequest.setFastestInterval(FASTEST_UPDATE_INTERVAL_IN_MILLISECONDS);
Wir implementieren dann den Rückruf wie folgt:
@Override
public void onLocationChanged(Location location) {
// set location member var and record timestamp.
}
Wenn die Probleme auftreten, scheinen keine Fehlerrückrufe zu erhalten. Wir haben auch versucht, reset() auf dem Google API-Client aufzurufen, wenn wir feststellen, dass wir seit langem kein GPS mehr erhalten haben. Wir überwachen auch die Verfügbarkeit des Standorts mithilfe eines Timers alle 2 Sekunden (mit getLocationAvailability). In der Regel stellen wir fest, dass das Problem durch das Zurücksetzen des Geräts durch den Benutzer (Einschalten, Ausschalten) behoben wird.
Unsere Fragen sind:
- Hat jemand anderes dieses Problem mit FLP bemerkt?
- Gibt es mehr, was wir tun können, um das Problem zu beheben, dass der Benutzer zurückgesetzt wird? Möchten Sie die Hilfe zum Hinzufügen von Standortaktualisierungen entfernen?
- Gibt es mehr Informationen, die wir sammeln können/sollten, um das Problem zu diagnostizieren?
Ich habe das gleiche genaue Problem. Welche Version von Google Play Services verwenden Sie und welche Betriebssystemversionen haben Sie auf den Geräten? Ich frage mich, ob das einen Unterschied macht? –
Ich habe kürzlich mit 9.2 begonnen.1 und habe das Problem noch nicht gesehen (Daumen gedrückt). – noahd
Ich habe kürzlich genau das gleiche Problem bekommen. Haben Sie dieses Problem seit dem Upgrade Ihrer Google Play Service-Version gesehen? Vielen Dank. –