在MediaPlayer仍在准备时停止或释放它

van*_*dzi 10 android android-mediaplayer

这是一个错误还是在准备时不可能释放,停止或杀死MediaPlayer

我有一个MediaPlayer运行的实例,Service如果我停止,释放,将其设置为null,同时MediaPlayer处于准备状态,它会停止.但是,如果我停止,释放,如果它处于准备状态,则将其设置为null .

onPrepared()在停止,释放,设置为null后调用.一些解决方法吗?

我认为这是用户想要MediaPlayer在完成准备之前停止的常见用例.

Mr.*_*.Me 15

通过查看MediaPlayer文档,您不允许调用stop()未初始化的对象; 这是有道理的,因为你无法阻止尚未运行/准备好的东西.

另一方面,release()在查看源代码MediaPlayer之后似乎就是这样做的.

但添加一个布尔标志表示不再需要该MediaPlayer对象并使用该标志释放您的对象(如果onPrepared()被调用)并没有坏处.

伪代码看起来像这样:

public void cancel(){
 mCancel = true;
}

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