vandzi vandzi - 1 year ago 67
Android Question

Stop or release MediaPlayer while it is still preparing

Is it a bug or is it not possible to release, stop or kill

while it's preparing?

I have an instance of
running in
, it stops fine if I stop, release, set it to null, while
is in prepared state. But it doesn't if I stop, release, set it to null if it's in preparing state.

is called after stop, release, setting to null. Some workaround for this?

I think it's common use case when a user wants to stop
before it has finished preparing.

Answer Source

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){
   //nullify your MediaPlayer reference
   mediaPlayer = null