GMS IllegalStateException:结果已被设置? [英] GMS IllegalStateException : Results have already been set?

查看:1239
本文介绍了GMS IllegalStateException:结果已被设置?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

从上周开始,我们的应用程序出现了很多例外情况,我们使用GMS 11.0.2

 致命异常: java.lang.IllegalStateException:通过com.google.android.gms.common.internal.zzbo.zza(未知源)
在com.google.android.gms.internal处已经设置了
的结果。 zzbbl.setResult(未知来源)
在com.google.android.gms.internal.zzbbf.zzz(未知来源)
来自com.google.android.gms.internal.zzbbf.zzf(未知来源)
在com.google.android.gms.internal.zzbbf.zzb(未知来源)
在com.google.android.gms.internal.zzbav.zza(未知来源:3)
在com.google.android.gms.internal.zzbdk.zzb(未知来源)
在com.google.android.gms.internal.zzbdk.zzrR(未知来源)
在com.google。 android.gms.internal.zzbdk.onConnected(未知来源)
在com.google.android.gms.common.internal.zzaa.onConnected(未知来源)
来自com.google.android.gms。 common.internal.zzn.zzsR(未知来源:2)
at com.google.android.gms.common.internal.zze.zzy(Unknown Source)
com.google.android.gms.common.internal.zzh.handleMessage(Unknown Source:4)
在android.os.Handler.dispatchMessage(Handler.java:102)
在android.os.Looper.loop(Looper.java:148)
在android.os.HandlerThread.run(HandlerThread.java :61)

织物的日志报告。



我们使用firebase和gms版本是11.0.2

我们如何检查这些问题?

和gms版本11.8.0中的相同问题

  java.lang.IllegalStateException:结果已被设置

在com.google.android.gms.common.internal.zzbs.zza(未知来源)
来自com.google.android.gms.common.api.internal.zzs.setResult(未知来源)
在com.google.android.gms.common.api.internal.zzm.zzy(未知来源)
在com.google.android.gms.common.api.internal.zzm.zzf(未知来源)在com.google.and上
roid.gms.common.api.internal.zzm.zzb(未知来源)
在com.google.android.gms.common.api.internal.zzc.zza(未知来源:3)
at com.google.android.gms.common.api.internal.zzbr.zzb(未知来源)
来自com.google.android.gms.common.api.internal.zzbr.zzakz(未知来源)
at com.google.android.gms.common.api.internal.zzbr.onConnected(Unknown Source)


  private void handleGMSException(){
Thread.UncaughtExceptionHandler rootHandler = Thread.getDefaultUncaughtExceptionHandler();
Thread.setDefaultUncaughtExceptionHandler((thread,throwable) - > {
if(!isGMSException(thread,throwable)){
rootHandler.uncaughtException(thread,throwable);
}
});
}

private boolean isGMSException(线程线程,Throwable throwable){
//检查主线程。
if(throwable == null || thread.getId()== 1)return false;

if(throwable.getStackTrace()!= null&& throwable.getStackTrace()。length> 0
&& throwable.getStackTrace()[0] .toString ().contains(com.google.android.gms)
&& throwable.getMessage()。contains(Results has been set)){
return true;
}

return false;
}


From last week , Our app occur a lot of exception about this .we use GMS 11.0.2

Fatal Exception: java.lang.IllegalStateException: Results have already been set
   at com.google.android.gms.common.internal.zzbo.zza(Unknown Source)
   at com.google.android.gms.internal.zzbbl.setResult(Unknown Source)
   at com.google.android.gms.internal.zzbbf.zzz(Unknown Source)
   at com.google.android.gms.internal.zzbbf.zzf(Unknown Source)
   at com.google.android.gms.internal.zzbbf.zzb(Unknown Source)
   at com.google.android.gms.internal.zzbav.zza(Unknown Source:3)
   at com.google.android.gms.internal.zzbdk.zzb(Unknown Source)
   at com.google.android.gms.internal.zzbdk.zzrR(Unknown Source)
   at com.google.android.gms.internal.zzbdk.onConnected(Unknown Source)
   at com.google.android.gms.common.internal.zzaa.onConnected(Unknown Source)
   at com.google.android.gms.common.internal.zzn.zzsR(Unknown Source:2)
   at com.google.android.gms.common.internal.zze.zzy(Unknown Source)
   at com.google.android.gms.common.internal.zzh.handleMessage(Unknown Source:4)
   at android.os.Handler.dispatchMessage(Handler.java:102)
   at android.os.Looper.loop(Looper.java:148)
   at android.os.HandlerThread.run(HandlerThread.java:61)

the log report by fabric.

we use firebase and gms version is 11.0.2

how do we check these problems?

and the same problem in gms version 11.8.0

java.lang.IllegalStateException: Results have already been set

   at com.google.android.gms.common.internal.zzbs.zza(Unknown Source)
   at com.google.android.gms.common.api.internal.zzs.setResult(Unknown Source)
   at com.google.android.gms.common.api.internal.zzm.zzy(Unknown Source)
   at com.google.android.gms.common.api.internal.zzm.zzf(Unknown Source)
   at com.google.android.gms.common.api.internal.zzm.zzb(Unknown Source)
   at com.google.android.gms.common.api.internal.zzc.zza(Unknown Source:3)
   at com.google.android.gms.common.api.internal.zzbr.zzb(Unknown Source)
   at com.google.android.gms.common.api.internal.zzbr.zzakz(Unknown Source)
   at com.google.android.gms.common.api.internal.zzbr.onConnected(Unknown Source)

解决方案

Since the bug hasn't been fixed yet, call handleGMSException() in BaseApplication's onCreate() method or implement your own ExceptionHandler. This hack is based on Jamin's answer, updated on Hexise's comment.

private void handleGMSException() {
    Thread.UncaughtExceptionHandler rootHandler = Thread.getDefaultUncaughtExceptionHandler();
    Thread.setDefaultUncaughtExceptionHandler((thread, throwable) -> {
        if (!isGMSException(thread, throwable)) {
            rootHandler.uncaughtException(thread, throwable);
        }
    });
}

private boolean isGMSException(Thread thread, Throwable throwable) {
    //Check if Main Thread.
    if (throwable == null || thread.getId() == 1) return false;

    if (throwable.getStackTrace() != null && throwable.getStackTrace().length > 0
            && throwable.getStackTrace()[0].toString().contains("com.google.android.gms")
            && throwable.getMessage().contains("Results have already been set")) {
        return true;
    }

    return false;
}

这篇关于GMS IllegalStateException:结果已被设置?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆