gpt4 book ai didi

android - 如何避免 TagManager "IllegalStateException: Results have already been set"

转载 作者:可可西里 更新时间:2023-11-01 18:48:01 27 4
gpt4 key购买 nike

我最近在我的 Android 应用程序中引入了 Google TagManager,以便在无需重新部署应用程序的情况下将更改推送到应用程序配置。

但我得到的实例是:

java.lang.IllegalStateException: Results have already been set
at com.google.android.gms.common.internal.p.a(Unknown Source)
at com.google.android.gms.common.api.b$a.a(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$b.a(Unknown Source)
at com.google.android.gms.tagmanager.ed$b.a(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)来避免或减轻错误。

我发现了一个与 GooglePlus 登录相关的相同错误消息的引用,因此我认为这可能与 Google Play 服务库有关。

还有人看过吗?有什么想法吗?

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

最佳答案

这是一个内部错误,由 TagManager 中的竞争条件引起,应在 Google Play Services 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/changelog

与此同时,您可以通过以下方式解决此问题:

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));
}

关于android - 如何避免 TagManager "IllegalStateException: Results have already been set",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27574668/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com