Android предотвращает просочившуюся окна
-
26-10-2019 - |
Вопрос
Во время запуска инструмента Monkey в моем приложении я получаю Android.View.WindowLeaked Исключение, я направил несколько потоков StackOverflow и обнаружил, что нам нужно избегать это При создании всплывающих часов нам нужно использовать GetApplicationContext (), но это вызывает Badtokenexception
E/AndroidRuntime(5597): android.view.WindowManager$BadTokenException: Unable to add window -- token null is not for an application
Снова после поиска я нашел этот ответ, который говорит
Одной из причин этой ошибки может быть попытка отобразить окно/диалог приложения через контекст, который не является действием
Так как это решить?
Решение
Обычно утечки в окнах, потому что вы не используете Showdialog Метод в Activity
но только использование Dialog.show()
метод
Когда отображается диалог и конфигурация вашего Activity
В диалоговом окне «Изменения» (например, изменение ориентации) нет окна для прикрепления, и это приводит к утечке окна.
Если вы используете Библиотека совместимости Вы должны использовать Диалогфрагмент вместо чистого dialog
.
Другие советы
причина WindowManager$BadTokenException
это то, что вы продолжаете показывать dialog
или же popupwindow
В окне, чей контекст сейчас не жив.
Таким образом, всегда следует отклонять всплывающее окно или диалог, когда вы переключаетесь между действиями или отклоняют любую деятельность.
Поэтому вам, вероятно, следует назвать Dilog.dismiss () в методе.
onPause()
{
dilog.dismiss()
}