Schwerwiegende Ausnahme: java.lang.IllegalStateException GoogleApiClient ist noch nicht verbunden
Haben wir diesen Absturz in crashlytics, das seltsame ist, es passiert in onConnected()
Rückruf bei der ersuchenden Standort.
Code:
abstract public class MainService_6_LocationClient extends MainService_5_DriverGpsLocationStoring
implements GoogleApiClient.ConnectionCallbacks, GoogleApiClient.OnConnectionFailedListener {
private LocationListener highAccuracyListener;
private GoogleApiClient googleApiClient;
private LocationRequest gpsRequest;
@Override
public void onCreate() {
super.onCreate();
lazyInit();
googleApiClient.connect();
}
@Override public void onConnected(Bundle bundle) {
Log.d(TAG, "onConnected");
lazyInit();
LocationServices.FusedLocationApi.requestLocationUpdates(googleApiClient, gpsRequest,
highAccuracyListener);
}
private void lazyInit() {
if (highAccuracyListener == null) {
highAccuracyListener = new HighAccuracyLocationListener();
}
if (googleApiClient == null) {
googleApiClient = new GoogleApiClient.Builder(this).addApi(LocationServices.API)
.addConnectionCallbacks(this)
.addOnConnectionFailedListener(this)
.build();
}
if (gpsRequest == null) {
gpsRequest = new LocationRequest().setInterval(2000)
.setFastestInterval(1000)
.setSmallestDisplacement(0)
.setPriority(LocationRequest.PRIORITY_HIGH_ACCURACY);
}
}
@Override public void onConnectionSuspended(int i) {
Log.w(TAG, "onConnectionSuspended");
lazyInit();
googleApiClient.reconnect();
}
@Override public void onConnectionFailed(ConnectionResult connectionResult) {
Log.e(TAG, "onConnectionFailed");
}
@Override public void onDestroy() {
Log.d(TAG, "onDestroy");
if (googleApiClient != null) {
if (googleApiClient.isConnected()) {
LocationServices.FusedLocationApi.removeLocationUpdates(googleApiClient,
highAccuracyListener);
googleApiClient.disconnect();
}
googleApiClient = null;
}
highAccuracyListener = null;
gpsRequest = null;
super.onDestroy();
}
Crash-log:
java.lang.IllegalStateException: GoogleApiClient is not connected yet.
at com.google.android.gms.common.internal.o.a()
at com.google.android.gms.common.api.b.b()
at com.google.android.gms.internal.lu.requestLocationUpdates()
at ee.mtakso.driver.service.orderState.MainService_6_LocationClient.onConnected(MainService_6_LocationClient.java:33)
at com.google.android.gms.common.internal.f.d()
at com.google.android.gms.common.api.b.gm()
at com.google.android.gms.common.api.b.d()
at com.google.android.gms.common.api.b$2.onConnected()
at com.google.android.gms.common.internal.f.d()
at com.google.android.gms.common.internal.f.dL()
at com.google.android.gms.common.internal.e$h.b()
at com.google.android.gms.common.internal.e$h.g()
at com.google.android.gms.common.internal.e$b.gU()
at com.google.android.gms.common.internal.e$a.handleMessage()
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:137)
at android.app.ActivityThread.main(ActivityThread.java:4947)
at java.lang.reflect.Method.invokeNative(Method.java)
at java.lang.reflect.Method.invoke(Method.java:511)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1038)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:805)
at dalvik.system.NativeStart.main(NativeStart.java)
Nicht onConnected()
bedeuten GoogleApiClient ist angeschlossen und bereit benutzt zu werden? Wie kann ich dies beheben?
InformationsquelleAutor der Frage ItsNotAboutTheName | 2014-11-18
Du musst angemeldet sein, um einen Kommentar abzugeben.
https://developer.android.com/reference/com/google/android/gms/common/api/GoogleApiClient.html
Die Umsetzung der GoogleApiClient erscheint, konzipiert für nur eine einzige Instanz. Es ist am besten zu instanziieren, die es nur einmal im onCreate, führen Sie dann die verbindungen und Trennungen, die single-Instanz.
InformationsquelleAutor der Antwort mattm
Vielleicht sollten Sie feststellen,
GoogleApiClient.Builder
hat eine MethodesetAccountName()
. Sie sollten aufrufen dieser Methode mit Ihrem Google-Konto-name. Ich habe versucht, und es gelang. Ich verwendete den folgenden code:InformationsquelleAutor der Antwort Li Jiangtao
Versuchen Sie es mit
com.google.android.gms.location.LocationClient
stattGoogleApiClient
. Beachten Sie, dass dieConnectionCallbacks
undOnConnectionFailedListener
Schnittstellen, die Sie implementieren, wird etwas anders sein.Hier ein kurzes Beispiel:
InformationsquelleAutor der Antwort Craig McIlwee
Gibt es ein Problem mit dem code hier:
Einfach zu reinigen es ein wenig:
InformationsquelleAutor der Antwort Mr Chasi