Как определить, что мой AlertDialog убит системой? - PullRequest
1 голос
/ 08 сентября 2011

Мой диалог основан на AlertDialog. Когда экран поворачивается (или происходит другое изменение конфигурации), диалоговое окно закрывается ОС.

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

Есть ли у Диалога шанс на очистку, прежде чем он будет убит системой? Или я вынужден использовать Activity в этом случае?

Ответы [ 3 ]

2 голосов
/ 08 сентября 2011

Когда экран поворачивается, ваша активность уничтожается и создается новая.

Если вы открыли диалоговое окно, и это диалоговое окно не управляется, оно утечет. Вы можете подавить это поведение в манифесте, задав android:configChanges="orientation" для <activity>, а затем вместо воссоздания Activity вместо этого вызывается обратный вызов onConfigurationChanges. Там вы можете обрабатывать поворот экрана.

Если вы используете Activity.showDialog(int), то перед уничтожением активности диалоговые состояния сохраняются. Когда создается новая активность, сохраненная информация используется для восстановления ваших диалогов.


Обновление

Если вы ищете обработку, когда ваш диалог закрыт, вы можете использовать AlertDialog.setOnDismissListener

2 голосов
/ 08 сентября 2011

Добавьте правильное разрешение в файл манифеста.

За активность, как в этом посте

0 голосов
/ 08 сентября 2011

есть onPrepareDialog, я думаю, должно быть что-то вроде onDestroy также.В любом случае, что если вы обработаете onConfigurationChanged действия и заново создадите диалоговое окно?

public void onConfigurationChanged(Configuration newConfig) 
{
super.onConfigurationChanged(newConfig);
//create dialog here again? 
}

update

спасибо salw, вам понадобится android: configChanges = "direction" в манифесте в теге активности

...