Есть вспомогательный класс, который проверяет наличие интернета. Запускаю из него алерт диалог, вылетает некритичная ошибка, когда жму на кнопку "Выход":
android.view.WindowLeaked: Activity has leaked window com.android.internal.policy.impl.PhoneWindow$DecorView
that was originally added here
at android.view.ViewRootImpl.
Получается что при выходе из приложения алерт диалог не закрывает окно. Собственно, сама функция:
public void getInetSettingsDialog(final Context ctx){
//mContext = ctx;
AlertDialog.Builder b = new AlertDialog.Builder(ctx);
//b.setMessage("Перейти в настройки?");
b.setTitle("Нет интернет соединения");
b.setPositiveButton("Настройки", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
ctx.startActivity(new Intent(Settings.ACTION_SETTINGS));
}
});
b.setNegativeButton("Выход", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
((Activity) ctx).finish();
}
});
b.show();
}
Подскажите как можно избавиться от нее?
Ответ
Возможно, ошибка вызвана тем, что диалог пытается отобразиться не между методами жизненного цикла активити - onResume()-onPause(). Если отображать диалог в промежутке меж этими методами - проблем быть не должно.
Если диалог отображается по к-л событию типа наличия/отсутствие интернета, кое может придти вне указанного промежутка, то вы можете не отображать его, отталкиваясь от boolean переменной, коей вы назначаете true в onResume() и false в onPause()
Комментариев нет:
Отправить комментарий