Google Play游戏在注销时崩溃

时间:2017-12-11 15:27:00

标签: android google-play-games

自从将Google Play服务迁移到11.6.0后,我的崩溃报告中出现了以下错误:

Fatal Exception: java.lang.IllegalStateException: Not connected. Call connect() and wait for onConnected() to be called.
       at com.google.android.gms.common.internal.zzd.zzakb(Unknown Source)
       at com.google.android.gms.common.internal.zzd.zzakc(Unknown Source)
       at com.google.android.gms.games.internal.GamesClientImpl.zzg(Unknown Source)
       at com.google.android.gms.games.internal.GamesClientImpl.zza(Unknown Source)
       at com.google.android.gms.common.api.internal.zzbr.signOut(Unknown Source)
       at com.google.android.gms.common.api.internal.zzbp.zzaii(Unknown Source)
       at com.google.android.gms.common.api.internal.zzbp.handleMessage(Unknown Source)
       at android.os.Handler.dispatchMessage(Handler.java:101)
       at android.os.Looper.loop(Looper.java:156)
       at android.os.HandlerThread.run(HandlerThread.java:61)

堆栈跟踪中signOut的出现似乎表明涉及了注销过程,但我一直无法找出究竟出现了什么问题。 注销过程的代码目前如下:

protected void logout() {
    if (GoogleSignIn.getLastSignedInAccount(this) != null) {
        mGoogleSignInClient.signOut().addOnCompleteListener(new OnCompleteListener<Void>() {
            @Override
            public void onComplete(@NonNull Task<Void> task) {
                mGoogleSignInAccount = null;
                setIgnoreConnectionResolution(true);
                onDisconnected();
            }
        });
    }
}

如果有人知道如何解决此问题,或者至少如何向Google报告,那将非常感激。

2 个答案:

答案 0 :(得分:0)

你是否在onDisconnected中调用任何PGS方法?如果,那么,您应该在mGoogleSignInClient.signOut()调用之前调用它们。

答案 1 :(得分:0)

我也尝试迁移到新的GPS并遇到与您相同的问题。

我在尝试修复另一个问题时偶然修复了它。

我所做的就是从我的onStop方法中删除signOut(最好使用之前的API调用onStop方法的disconnect)。

由于signOut实际上清除了用户先前选择的帐户,因此在onStop方法中调用时,会创建所有类型的其他问题(在检查用户是否已登录时,或者当silentSignIn始终失败时,尤其是在活动之间)。

所以我不知道你是否也在你的onStop上调用signOut,而且我不确定它是如何导致我的应用程序以同样方式崩溃的,但如果你这样做,请尝试不使用它。

更新的示例应用程序在onStop方法中不包含任何内容(与之前曾调用disconnect的方法相比),所以我猜这个方法无关。

希望这有帮助。