GoogleApiClient wirft "GoogleApiClient ist noch nicht verbunden" AFTER onConnected Funktion wird aufgerufen

Also habe ich etwas gefunden, das mir bei GoogleApiClient nicht ganz klar ist. GoogleApiClient hat eine Funktion aufgerufen onConnected, die ausgeführt wird, wenn der Client verbunden ist (sicher)

Ich habe meine eigene Funktion namens: startLocationListening, die schließlich auf GoogleApiClient's onConnected Funktion aufgerufen wird.

Also meine startLocationListening-Funktion konnte nicht ohne eine GoogleApiClient-Verbindung laufen.

Code und Protokoll:

@Override public void onConnected(Bundle bundle) { log("Google_Api_Client:connected."); initLocationRequest(); startLocationListening(); //Exception caught inside this function } 

 private void startLocationListening() { log("Starting_location_listening:now"); //Exception caught here below: LocationServices.FusedLocationApi.requestLocationUpdates(mGoogleApiClient, mLocationRequest, this); } 

Die Ausnahme ist:

 03-30 12:23:28.947: E/AndroidRuntime(4936): java.lang.IllegalStateException: GoogleApiClient is not connected yet. 03-30 12:23:28.947: E/AndroidRuntime(4936): at com.google.android.gms.internal.jx.a(Unknown Source) 03-30 12:23:28.947: E/AndroidRuntime(4936): at com.google.android.gms.common.api.cb(Unknown Source) 03-30 12:23:28.947: E/AndroidRuntime(4936): at com.google.android.gms.internal.nf.requestLocationUpdates(Unknown Source) 03-30 12:23:28.947: E/AndroidRuntime(4936): at hu.company.testproject.service.GpsService.startLocationListening(GpsService.java:169) 03-30 12:23:28.947: E/AndroidRuntime(4936): at hu.company.testproject.service.GpsService.onConnected(GpsService.java:259) 

Mein Debug-Protokoll sagt auch, dass die onConnected-Funktion aufgerufen wurde :

 03-30 12:23:28.847: I/Locationing_GpsService(4936): Google_Api_Client:connected. 03-30 12:23:28.857: I/Locationing_GpsService(4936): initLocationRequest:initing_now 03-30 12:23:28.877: I/Locationing_GpsService(4936): initLocationRequest:interval_5000 03-30 12:23:28.897: I/Locationing_GpsService(4936): initLocationRequest:priority_100 03-30 12:23:28.917: I/Locationing_GpsService(4936): Starting_location_listening:now 

Danach bekam ich die Ausnahme.

Bin ich hier etwas fehlt Ich habe eine Antwort für "verbunden" Ich lief meine func, und ich habe den Fehler "nicht verbunden" was ist das? Plus ein nerviges Ding ist: Ich habe diesen Standort Service seit Wochen benutzt und habe diesen Fehler nie bekommen.

EDIT:

Ich habe eine spezifischere Log-Ausgabe hinzugefügt, nur meine Gedanken geblasen, check this out:

 @Override public void onConnected(Bundle bundle) { if(mGoogleApiClient.isConnected()){ log("Google_Api_Client: It was connected on (onConnected) function, working as it should."); } else{ log("Google_Api_Client: It was NOT connected on (onConnected) function, It is definetly bugged."); } initLocationRequest(); startLocationListening(); } 

Protokollausgabe in diesem Fall:

 03-30 16:20:00.950: I/Locationing_GpsService(16608): Google_Api_Client:connected. 03-30 16:20:00.960: I/Locationing_GpsService(16608): Google_Api_Client: It was NOT connected on (onConnected) function, It is definetly bugged. 

Ja, ich habe gerade mGoogleApiClient.isConnected() == false inside onConnected() wie ist es möglich?

BEARBEITEN:

Da niemand dies auch mit Reputations-Prämie beantworten konnte, beschloss ich, dies als Bug an Google zu melden. Was als nächstes kam, war mir wirklich überrascht. Die offizielle Antwort von Google für meinen Bericht:

"Diese Website ist für Entwickler-Probleme mit dem AOSP Android-Quellcode und dem Entwickler-Toolset, nicht Google Apps oder Diensten wie Play Services, GMS oder Google APIs. Leider scheint es kein geeigneter Ort, um Bugs mit Play Services zu melden Alles was ich sagen kann ist, dass diese Website ist es nicht, sorry. Versuchen Sie, auf der Google Produkt-Foren statt. "

Volle Ausgabe hier. (Ich hoffe, sie werden es nicht entfernen, nur weil es dumm ist)

Also ja ich habe einen Blick auf Google Produkt-Foren und nur coudnt finden Sie ein Thema, um diese Sache zu veröffentlichen, so im Moment Iam verwirrt und stecken.

Kann mir irgendjemand auf dem Planeten Erde helfen?

BEARBEITEN:

Vollcode in Pastebin

  • WANN READ_GSERVICES Berechtigung verwenden?
  • Absturz in GoogleSignInAccount in den neuesten PlayServices 8.3
  • Warum benötigt play-services-location die android.permission.WRITE_EXTERNAL_STORAGE und android.permission.READ_EXTERNAL_STORAGE Berechtigungen?
  • Android app stürzt ohne Ausnahme aus, wenn man versucht, sich mit google plus anzumelden
  • Warum werden die Berechtigungen automatisch zu meinem AndroidManifest hinzugefügt, wenn sie die Google Play Services-Bibliothek enthalten
  • Android turn-based Multiplayer benutzerdefinierte Einladung Bildschirm
  • 6 Solutions collect form web for “GoogleApiClient wirft "GoogleApiClient ist noch nicht verbunden" AFTER onConnected Funktion wird aufgerufen”

    Ich habe gerade festgestellt, dass Sie den googleApiClient in onStartCommand () erstellen. Das scheint eine schlechte Idee zu sein.

    Lassen Sie uns sagen, dass Ihr Service zweimal ausgelöst wird. Es werden zwei googleApiClient-Objekte erstellt, aber du wirst nur auf einen Bezug nehmen. Wenn derjenige, dessen Referenz Sie nicht haben, seinen Rückruf auf onConnected () ausführt, werden Sie in diesem Client verbunden sein, aber der Client, dessen Referenz Sie tatsächlich haben, konnte noch nicht verbunden sein.

    Ich vermute, das ist, was los ist. Versuchen Sie, Ihre googleApiClient-Erstellung auf onCreate zu verschieben und zu sehen, ob Sie das gleiche Verhalten erhalten.

    Ich hatte den gleichen Fehler, aber mein Problem war anders als die Antwort von Iheanyl:

    Ich habe den googleApiClient statisch deklariert. Dies verhindert, dass Android den Dienst abschaltet.

    https://developer.android.com/reference/com/google/android/gms/common/api/GoogleApiClient.html

    Sie sollten ein Clientobjekt in der OnCreate (Bundle) -Methode deiner Aktivität instanziieren und dann in onStart () in onStop () in onStop () die Verbindung () aufrufen (), unabhängig vom Status.

    Die Implementierung des GoogleApiClient erscheint nur für eine einzige Instanz. Es ist am besten, es nur einmal in onCreate zu instanziieren, dann führen Sie Verbindungen und Trennungen mit der einzigen Instanz.

    Call connect () -Methode in onStart () -Methode

      @Override protected void onStart() { super.onStart(); // Call GoogleApiClient connection when starting the Activity googleApiClient.connect(); } @Override protected void onStop() { super.onStop(); // Disconnect GoogleApiClient when stopping Activity googleApiClient.disconnect(); } 

    Ich hatte dieses Problem, wenn ich zufällig aber googleApiClient.connect () in oncreate und onresume. Entferne es einfach von oncreate.

    Bewegen der googleApi-Erstellung zu onCreate löste das Problem für mich.

    Das Android ist ein Google Android Fan-Website, Alles ├╝ber Android Phones, Android Wear, Android Dev und Android Spiele Apps und so weiter.