Wil*_*iam 15 android google-play-services google-tag-manager google-play-games
我最近在我的Android应用中引入了Google TagManager,以便将更改推送到app config,而无需重新部署应用.
但我得到的例子是:
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)
Run Code Online (Sandbox Code Playgroud)
它们出现在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/变更日志
同时,您可以通过以下方式解决这个问题:
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));
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
1787 次 |
最近记录: |