我的对话基于AlertDialog。 当屏幕旋转(或发生某些其他配置更改)时,操作系统将关闭该对话框。
问题是我的对话框由MediaPlayer播放音频,当发生这种自动关闭时,对话框消失但声音继续播放。
Dialog在被系统杀死之前是否有机会进行清理?或者我在这种情况下被迫使用Activity?
答案 0 :(得分:2)
在清单文件中添加适当的权限。
答案 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”