我遇到了一个严重的问题,媒体播放器(MP)卡在prepare()
方法。
我的应用程序运行prepare()
in an AsyncTask
以避免阻塞 UI,因为来源来自网络。有几个“播放”按钮用户可以随时单击,因此我添加了prepare()
在同步方法中可以更好地控制 MP 的状态。我的应用程序还调用release()
onPause 释放已使用的资源。
问题是,我注意到如果release()
准备时被调用,prepare()
永远不会返回,所以我陷入了同步方法中。最糟糕的是AsyncTask
线程处于死锁状态,每次用户在该状态下单击播放时,都会浪费另一个线程,因为它一直在等待获取拥有永不返回的监视器prepare()
。很快我所有的AsyncTasks
线程被浪费了,由于我广泛使用它们,我的应用程序停止工作。
所以我的问题是:有人知道如何克服这个问题吗?我正在认真考虑使用 MediaPlayer 重做所有工作,但我需要事先知道处理此类情况的最佳方法。
你应该使用prepareAsync()
反而。而且你不需要AsyncTask
只是为了MediaPlayer
准备。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)