媒体播放器停止,释放而prepareasync [英] Mediaplayer stop, release while prepareasync

查看:471
本文介绍了媒体播放器停止,释放而prepareasync的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

是它的错误,或者它无法释放,停止杀媒体播放器,而它的preparing? 我在服务媒体播放器的运行,它停止罚款,如果我停下来,发布,空在媒体播放器prepared状态,但它没有,如果我停下来,发布,preparing状态空媒体播放器。 在prepared叫不停,发布,空之后的事件。一些解决方法吗? 我认为这是当用户停止媒体播放器前完成缓冲常见的使用案例。 感谢您的想法

is it bug or it's not possible to release, stop, kill media player while it's preparing? I have mediaplayer running in service, it stops fine if I stop,release,null mediaplayer in prepared state but it don't if I stop,release,null mediaplayer in preparing state. onPrepared is called event after stop,release,null. Some workaround for this? I think it's common use case when user stop mediaplayer before it finish buffering. Thanks for thoughts

推荐答案

你不准叫停在初始化的对象,这是有道理的,因为你不能阻止什么没有运行/准备好MediaPlayer的单证。

From MediaPlayer documentations you're not allowed to call stop on uninitialized object, which makes sense because you can't stop what is not running/ready yet.

在另一方面似乎总是在寻找源头$ C $下这里的MediaPlayer后做的伎俩:<一href="http://grep$c$c.com/file/repository.grep$c$c.com/java/ext/com.google.android/android/2.2_r1.1/android/media/MediaPlayer.java#MediaPlayer.release%28%29">MediaPlayer Java的code 。

on the other hand release seems to do the trick after looking at the source code for MediaPlayer here : MediaPlayer Java Code.

但它不伤害添加一个布尔标志,表示没有必要对MediaPlayer对象了,并使用该标志来释放你的对象,如果上ppared $ P $ 被称为 伪code是这样的:

but it doesn't harm to add a Boolean flag to indicate that there is no need for the mediaplayer object anymore and use that flag to release your object if onPrepared gets called a pseudocode would look like this:

public void cancel(){
 mCancel = true;
}

public void onPrepared(MediaPlayer player){
  if(mCancel){
   player.release();
   //nullify your MediaPlayer reference
   mediaPlayer = null
}
}

这篇关于媒体播放器停止,释放而prepareasync的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆