"GoogleApiClient ist nicht verbunden noch" Ausnahme in der Besetzung Anwendung

Ich bin die Entwicklung einer Android-Anwendung, die wirft Inhalte zu Chromecast.
Manchmal in meinem com.google.android.gms.common.api.GoogleApiClient.ConnectionCallbacks Umsetzung in der onConnected Methode, bekomme ich eine

java.lang.IllegalStateException: GoogleApiClient is not connected yet.

Ausnahme.

Hier ist der stack trace:

    FATAL EXCEPTION: main
 Process: com.joaomgcd.autocast, PID: 13771
 java.lang.IllegalStateException: GoogleApiClient is not connected yet.
    at com.google.android.gms.internal.eg.a(Unknown Source)
    at com.google.android.gms.common.api.GoogleApiClient.b(Unknown Source)
    at com.google.android.gms.cast.Cast$CastApi$a.launchApplication(Unknown Source)
    at com.joaomgcd.autocast.media.MediaConnectionCallbacks.onConnected(MediaConnectionCallbacks.java:37)
    at com.google.android.gms.internal.dx.b(Unknown Source)
    at com.google.android.gms.common.api.GoogleApiClient.bn(Unknown Source)
    at com.google.android.gms.common.api.GoogleApiClient.f(Unknown Source)
    at com.google.android.gms.common.api.GoogleApiClient$2.onConnected(Unknown Source)
    at com.google.android.gms.internal.dx.b(Unknown Source)
    at com.google.android.gms.internal.dx.bT(Unknown Source)
    at com.google.android.gms.internal.dw$h.b(Unknown Source)
    at com.google.android.gms.internal.dw$h.b(Unknown Source)
    at com.google.android.gms.internal.dw$b.bR(Unknown Source)
    at com.google.android.gms.internal.dw$a.handleMessage(Unknown Source)
    at android.os.Handler.dispatchMessage(Handler.java:102)
    at android.os.Looper.loop(Looper.java:136)
    at android.app.ActivityThread.main(ActivityThread.java:5017)
    at java.lang.reflect.Method.invokeNative(Native Method)
    at java.lang.reflect.Method.invoke(Method.java:515)
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595)
    at dalvik.system.NativeStart.main(Native Method)

Dies scheint nur zu passieren, wenn ich hatte bereits verbunden ist, GoogleApiClient vor und bin im Anschluss für ein zweites mal. Zwischen die 2 Anrufe die ich trennen Sie es von der api-client mit dem code unten.

Meine Vermutung ist, dass dies ein Fehler ist. Bin ich richtig? Da bin ich in der onConnected Methode, die GoogleApiClient sollte bereits angeschlossen sein.

Was kann ich tun, um zu bekommen? Soll ich einfach eine Weile warten, bis die GoogleApiClient wirklich angeschlossen?

Ich Tue dies in einem service-und hier sind die relevanten bits:

wenn der Dienst gestartet wird:

mMediaRouter.addCallback(mMediaRouteSelector, mediaCallback, MediaRouter.CALLBACK_FLAG_PERFORM_ACTIVE_SCAN);

mediaCallback hat diesen code:

@Override
    public void onRouteAdded(MediaRouter router, RouteInfo route) {
        super.onRouteAdded(router, route);
        if (route.getDescription().equals("Chromecast")) {
            ...
            mSelectedDevice = com.google.android.gms.cast.CastDevice.getFromBundle(route.getExtras());

            ...
                castClientListener = new CastListener(context, apiClient);

                Cast.CastOptions.Builder apiOptionsBuilder = Cast.CastOptions.builder(mSelectedDevice, castClientListener);
                ...
                apiClient.set(new GoogleApiClient.Builder(context).addApi(Cast.API, apiOptionsBuilder.build()).addConnectionCallbacks(connectionCallback).addOnConnectionFailedListener(new MediaConnectionFailedListener(context)).build());
                apiClient.get().connect();
        }

    }

connectionCallback hat diesen code:

@Override
    public void onConnected(final Bundle arg0) {
        ...
            Cast.CastApi.launchApplication(apiClient, UtilAutoCast.CHROMECAST_APP_ID, false).setResultCallback(connectionCallback);
        ...
    }

Den code oben ist der Teil, wo der crash passiert.

Und wenn ich den Dienst beenden ich diesen code ausführen:

if (mMediaRouter != null) {
    mMediaRouter.removeCallback(mediaCallback);
    mMediaRouter = null;
}
if (apiClient != null) {
    Cast.CastApi.stopApplication(apiClient);
    if (apiClient.isConnected()) {
        apiClient.disconnect();
        apiClient = null;
    }
}

Vielen Dank im Voraus.

können Sie fügen Sie einige code?
Anschluss für ein zweites mal? Sie haben getrennt von der ersten? Benötigen Sie mehr code aus Ihrer Seite, um zu sehen, was passiert.
Bitte zeigen Sie uns, wo Sie eine Verbindung herstellen GoogleApiClient...

InformationsquelleAutor joaomgcd | 2014-02-17

Schreibe einen Kommentar