保留媒体片段音乐播放

Retain media fragment music playing

我有一个 BottomSheetDialogFragment 用来播放录音。但是该片段正在从头开始重新创建并在配置更改时销毁。

我试图找到一个仅在片段完全销毁时调用的生命周期事件。但是所有 onDetach() onDestroy() onDestroyView() 都会在任何配置更改(例如旋转更改)时被调用。

我试过 retainInstanceonDestroy() 仍然被调用。

我见过其他播放器像 Google 使用小对话框播放音乐一样。是因为他们使用的是 Activity 而不是片段吗?更独立的东西可能有更多的力量,但它仍然是一个完整的activity,更难控制。

看起来问题出在库中,即使片段没有被销毁,对话框也被关闭了。

override fun onDestroyView() {
    if (dialog != null && retainInstance) {
        dialog.setDismissMessage(null)
    }
    super.onDestroyView()
}

这段代码修复了它,现在片段被保留并且 onDestroy() 不再被调用。