Токен android.os.BinderProxy@e4f4f2b недействителен; ваша деятельность работает?
Я получаю ниже сбоя исключительно во время запуска приложения и только в Emulator & Debug
Эмулятор и бег: ОК
Устройство и запуск: ОК
Устройство и отладка: ОК
Эмулятор и отладка: CRASH!
Похоже, что Android пытается сделать тост во время запуска, и, поскольку у меня не так много тостов и я добавил точку останова на всех них, я могу исключить, что это один из моих.
Есть ли способ узнать, какое сообщение пытается отобразить Android и к какой активности оно относится? Logcat не показывает ничего ненормального, прежде чем происходит сбой.
android.view.WindowManager$BadTokenException: Unable to add window -- token android.os.BinderProxy@e4f4f2b is not valid; is your activity running?
at android.view.ViewRootImpl.setView(ViewRootImpl.java:679)
at android.view.WindowManagerGlobal.addView(WindowManagerGlobal.java:342)
at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:93)
at android.widget.Toast$TN.handleShow(Toast.java:459)
at android.widget.Toast$TN$2.handleMessage(Toast.java:342)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:154)
at android.app.ActivityThread.main(ActivityThread.java:6119)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:886)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:776)
1 ответ
Скорее всего, это происходит потому, что вы пытаетесь показать диалоговое окно после выполнения фонового потока, когда действие уничтожается.
Вот что сработало для меня:
if(!((Activity) context).isFinishing())
{
//show dialog
}
Это отлично работает для меня, используя эту практику в течение многих лет.