调用 setDataSource 后,在媒体播放器上调用重置,冻结 UI



我在音乐播放器应用程序上工作,该应用程序处理的所有音乐都来自流媒体资源。

每次用户更改歌曲时,我都需要调用 reset 并设置新的数据源。如果用户快速切换歌曲,并且媒体播放器处于准备状态,则我的应用中的 UI 将冻结。

仅当我调用 reset 并且媒体播放器处于准备状态时,才会发生这种情况。

如何防止我的应用 UI 冻结并获取 ANR?

PS:我使用的是prepareAsync(),而不是prepare()。

请参阅 setOnPreparedListener。您可以通过各种侦听器跟踪类中的状态,并避免调用 prepareAsync()。

在 reset() 之前调用 stop() 可能会有更好的运气。

http://developer.android.com/reference/android/media/MediaPlayer.html#setOnPreparedListener%28android.media.MediaPlayer.OnPreparedListener%29

最新更新