Is it a bug or is it not possible to release, stop or kill MediaPlayer while it\'s preparing?
I have an instance of MediaPlayer running in
By looking at the MediaPlayer documentation, you're not allowed to call stop() on an uninitialized object; which makes sense because you can't stop what is not running/ready yet.
On the other hand, release() seems to do the trick after looking at the source code of MediaPlayer.
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
}
}
Another solution could be to implement the OnBufferingUpdateListener and override its method like this:
@Override
public void onBufferingUpdate(MediaPlayer mp, int percent) {
if (cancel) {
mp.release();
mMediaPlayer = null;
}
}