我在音乐播放器应用程序上工作,该应用程序处理的所有音乐都来自流媒体资源。
每次用户更改歌曲时,我都需要调用 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