Android MediaPlayer 卡在 prepare() 中

标签 android media-player

我遇到了一个严重的问题,媒体播放器 (MP) 卡在 prepare() 方法中。 我的应用程序在 AsyncTask 中运行 prepare() 以避免阻塞 UI,因为源来自网络。有几个用户可以随时单击的“播放”按钮,因此我在同步方法中添加了 prepare() 以更好地控制 MP 的状态。我的应用程序还调用 release() onPause 来释放已使用的资源。

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

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

最佳答案

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

关于Android MediaPlayer 卡在 prepare() 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8511210/

相关文章:

java - 当您在没有点击播放的那一刻按暂停或停止时,Android 广播流媒体应用程序崩溃

android - 播放完声音后如何释放 MediaPlayer?

android - 搜索栏中显示的音乐缓冲级别

video-streaming - VLC 播放器支持 MPEG-DASH

ffmpeg - 通过ffmpeg反向播放视频

Android从字符串数组设置listItem背景颜色

android-canvas - Android drawArc 带阴影

xml - 'Android' 中的所见即所得 View 编辑器?

java - AdapterView.OnItemClickListener 不起作用

android - 逐层显示框架布局