Android MediaPlayer卡在prepare()中

hgm*_*hgm 6 android media-player

我正面临着媒体播放器(MP)陷入困境的严重问题prepare().我的应用程序运行prepare()AsyncTask以避免阻塞UI,因为消息来源是从网络.用户可以随时点击几个"播放"按钮,因此我在prepare()内部添加了一个同步方法,以更好地控制MP的状态.我的应用程序还调用release()onPause来释放使用过的资源.

事情是,我注意到如果release()在准备时调用,prepare()从不返回,所以我陷入同步方法.最糟糕的是AsyncTask线程处于死锁状态,并且每次用户在该状态下点击播放时,另一个线程都会被浪费,因为它一直在等待获取永不返回的监视器prepare().很快我的所有AsyncTasks线程都被浪费了,因为我广泛使用它们,我的应用程序停止工作.

所以我的问题是:有人知道如何克服这个问题吗?我正在认真考虑使用MediaPlayer重做我的所有工作,但我需要知道事先处理这种情况的最佳方法.

ina*_*ruk 5

你应该改用prepareAsync()。而且您不需要AsyncTask仅仅为了准备而需要MediaPlayer