如何避免TagManager“IllegalStateException:结果已被设置”

我最近将Google TagManager引入到我的Android应用程序中,以便将更改推送到应用程序configuration,而无需重新部署应用程序。

但是我得到的情况是:

java.lang.IllegalStateException: Results have already been set at com.google.android.gms.common.internal.pa(Unknown Source) at com.google.android.gms.common.api.b$aa(Unknown Source) at com.google.android.gms.tagmanager.ed.a(Unknown Source) at com.google.android.gms.tagmanager.ed.a(Unknown Source) at com.google.android.gms.tagmanager.ed$ba(Unknown Source) at com.google.android.gms.tagmanager.ed$ba(Unknown Source) at com.google.android.gms.tagmanager.cj.c(Unknown Source) at com.google.android.gms.tagmanager.ck.run(Unknown Source) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587) at java.lang.Thread.run(Thread.java:841) 

它们发生在从Android 4.4到5.0.1的各种设备上

正如你所看到的那样,我的应用程序在栈跟踪中没有任何元素,而且我真的不知所措,除了删除TagManager之外,我可以做的是避免或减轻错误。

我find了一个与GooglePluslogin相关的错误消息的引用,所以我想这可能与Google Play服务库有关。

其他人看到了吗? 有任何想法吗?

提出了Play-Games项目的问题: https : //code.google.com/p/play-games-platform/issues/detail?id = 209

Solutions Collecting From Web of "如何避免TagManager“IllegalStateException:结果已被设置”"

这是由于TagManager中的竞争条件造成的内部错误,应该在Google Play服务6.7(2015年2月17日)中修复。

请参阅https://productforums.google.com/forum/?utm_medium=email&utm_source=footer#!msg/tag-manager/NOlng117_2g/w46OkQS5Gm8J以及https://developers.google.com/analytics/devguides/collection/android/更新日志

同时你可以通过以下方式解决它:

 private static class MyHandler implements Thread.UncaughtExceptionHandler { private final Thread.UncaughtExceptionHandler defaultHandler; MyHandler(Thread.UncaughtExceptionHandler defaultHandler) { this.defaultHandler = defaultHandler; } @Override public void uncaughtException(Thread thread, Throwable ex) { String classpath = null; if (ex != null && ex.getStackTrace().length > 0) { classpath = ex.getStackTrace()[0].toString(); } if (classpath != null && ex.getMessage().contains("Results have already been set") && classpath.contains("com.google.android.gms.tagmanager") ) { // ignore } else { // run your default handler defaultHandler.uncaughtException(thread, ex); } } }; // Application#onCreate public void onCreate() { // for catching app global unhandled exceptions final Thread.UncaughtExceptionHandler defaultHandler = Thread.getDefaultUncaughtExceptionHandler(); Thread.setDefaultUncaughtExceptionHandler(new MyHandler(defaultHandler)); } 

根据这个链接,Google已经在更新的版本中解决了这个问题:

https://developers.google.com/analytics/devguides/collection/android/changelog