android.view.WindowManager$BadTokenException только с планшетами Kindle Fire в магазине Amazon.

У меня есть следующая трассировка стека в Amazon App Store. У меня есть три основные проблемы с анализом:

  1. Я никогда не смог бы воспроизвести его, так как это происходит только с планшетами Kindle Fire, а у меня его нет
  2. Доступная мне трассировка стека не содержит пакета моего приложения, поэтому трудно определить, какая строка в моем коде вызывает это на самом деле
  3. Это происходит только изредка, около 95% сессий Amazon Kindle, кажется, без проблем

Отслеживание стека, предоставляемое Amazon Developer Reporting (это все, что я получил от них...)

android.view.WindowManager$BadTokenException
    at android.view.ViewRootImpl.setView(ViewRootImpl.java:525)
    at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:301)
    at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:215)
    at android.view.WindowManagerImpl$CompatModeWrapper.addView(WindowManagerImpl.java:140)
    at android.app.Dialog.show(Dialog.java:295)
    at android.webkit.WebView$ActionPopupWindow.onClick(WebView.java:5867)
    at android.view.View.performClick(View.java:3540)
    at android.view.View$PerformClick.run(View.java:14167)
    at android.os.Handler.handleCallback(Handler.java:605)
    at android.os.Handler.dispatchMessage(Handler.java:92)
    at android.os.Looper.loop(Looper.java:137)
    at android.app.ActivityThread.main(ActivityThread.java:4558)
    at java.lang.reflect.Method.invokeNative(Native Method)
    at java.lang.reflect.Method.invoke(Method.java:511)
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)
    at dalvik.system.NativeStart.main(Native Method)

Дополнительная информация об устройствах: (согласно отслеживанию приложения Google Analytics)

  1. Устройства: Kindle Fire HD 7, Kindle Fire HD 8.9
  2. ОС: "Амазонка" android 4.0.3 и 4.0.4

Моя интерпретация трассировки стека до сих пор заключается в том, что что-то не так с Dialog в моем приложении, но это настолько странно, что на других устройствах, кроме Kindle Fire, все это работает (включая устройства Froyo & Gingerbread!). И линия с WebView смущает меня, потому что у меня нигде нет веб-просмотра..

Уже есть некоторые другие вопросы о BadTokenException, но то, что я исследовал, похоже, что решения не подходят для моего случая. Как, например, этот вопрос, но я не делаю многопоточные вещи внутри приложения, поэтому не должен работать и для меня. Может я что-то там пропустил?

У вас есть идеи, что может быть причиной этого? Так как это случается редко и только разжигает, это не большая проблема для меня, но я хотел бы понять, что происходит.

Редактировать: Еще один подозреваемый - это реклама Admob, которая может объяснить случайность (может быть, иногда появляются какие-то недоброжелательные объявления?)

1 ответ

Решение

Вы правы, это исключение в отношении самого диалога. Я нашел несколько ссылок. Надеюсь, это работает для вас.

http://www.jjoe64.com/2011/06/how-to-fix-windowmanager.html
http://stackru.com/questions/1561803/android-progressdialog-show-crashes-with-getapplicationcontext
http://stackru.com/questions/22034495/window-manager-bad-token-exception-android

Причина в том, что диалоговое окно "Сумма времен" не может заметить, что его родительское действие завершено или нет. Наиболее важным наблюдением является то, что это редкая и неопределенная проблема.

Другие вопросы по тегам