Android предотвращает утечку окон - PullRequest
1 голос
/ 01 декабря 2011

При запуске инструмента обезьяны в моем приложении я получаю исключение android.view.WindowLeaked , я сослался на некоторые потоки stackoverflow и обнаружил, что нам нужно избегать это при создании всплывающих окон, вместо этого нам нужно использовать getApplicationContext (), но это вызывает BadTokenException

E/AndroidRuntime(5597): android.view.WindowManager$BadTokenException: Unable to add window -- token null is not for an application

Снова после поиска через Iнашел ответ, который гласит:

Одной из причин этой ошибки может быть попытка отобразить окно / диалог приложения через контекст, который не является действием

Итак, как решитьэто?

Ответы [ 2 ]

3 голосов
/ 01 декабря 2011

Обычно окно просачивается, потому что Вы не используете showDialog метод в Activity, но используете только метод Dialog.show().

Когда отображается диалоговое окно и конфигурация вашего Activity изменения (например, изменение ориентации) не имеет окна для присоединения, что приводит к утечке окна.

Если вы используете Библиотека совместимости Вы должны использовать DialogFragment вместо чистого dialog.

0 голосов
/ 01 декабря 2011

причина WindowManager$BadTokenException в том, что вы продолжаете показывать dialog или popupwindow в окне, контекст которого сейчас не активен.

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

Поэтому вам, вероятно, следует вызвать dilog.dismiss () в методе onPause.

onPause()
{
dilog.dismiss()
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...