Как избежать TagManager «IllegalStateException: результаты уже установлены»

Недавно я представил Google TagManager в свое приложение для Android, чтобы внести изменения в конфигурацию приложения без необходимости повторного развертывания приложения.

Но я получаю примеры:

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), чтобы избежать или смягчить ошибку.

Я нашел одну ссылку на то же сообщение об ошибке, связанное с входом в GooglePlus, поэтому я думаю, что это может быть связано с библиотекой Служб Google Play.

Кто-нибудь еще видел это? Есть идеи?

Возникла проблема с проектом Play-Games: https://code.google.com/p/play-games-platform/issues/detail?id=209

Это внутренняя ошибка из-за состояния гонки в TagManager и должна быть исправлена ​​в Google Play Services 6.7 (17 февраля 2015 г.).

См. 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