调用setDataSource后调用Media Player上的重置,冻结UI

时间:2015-04-15 20:31:52

标签: java android android-mediaplayer

我正在使用音乐播放器应用,应用处理的所有音乐都来自流媒体资源。

每次用户更改歌曲时,我都需要调用reset并设置一个新的dataSource。如果用户快速切换歌曲,并且MediaPlayer处于准备状态,则我的应用程序中的UI会冻结。

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

如何阻止我的应用UI冻结并获得ANR?

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

1 个答案:

答案 0 :(得分:0)

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

你可能还有更好的运气,也可以在reset()之前调用stop()。

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