如何检测我的AlertDialog是否被系统杀死?

时间:2011-09-08 13:04:41

标签: android android-alertdialog

我的对话基于AlertDialog。 当屏幕旋转(或发生某些其他配置更改)时,操作系统将关闭该对话框。

问题是我的对话框由MediaPlayer播放音频,当发生这种自动关闭时,对话框消失但声音继续播放。

Dialog在被系统杀死之前是否有机会进行清理?或者我在这种情况下被迫使用Activity?

3 个答案:

答案 0 :(得分:2)

在清单文件中添加适当的权限。

For the activity like in this post

答案 1 :(得分:2)

当屏幕旋转时,您的活动将被销毁并创建新活动。

如果您打开了对话框并且未管理此对话框,则会泄漏。您可以通过为android:configChanges="orientation"定义<activity>来清除清单中的此行为,然后代替重新创建活动,而是调用onConfigurationChanges回调。在那里你可以处理屏幕旋转。

如果您正在使用Activity.showDialog(int),则在销毁活动之前会保存对话框状态。创建新活动时,保存的信息用于恢复对话框。


更新

如果您在对话框关闭时正在寻找处理方式,则可以使用AlertDialog.setOnDismissListener

答案 2 :(得分:0)

有onPrepareDialog,我想应该有类似onDestroy的东西。无论如何,如果你处理的话 onConfigurationChanged活动并重新创建对话框?

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

更新

谢谢你,你需要在活动标签的清单中使用android:configChanges =“orientation”