在发布之前,我是否需要在MediaPlayer上调用reset?

时间:2011-11-16 01:18:43

标签: android android-mediaplayer

RandomMusicPlayer的示例代码中,在reset()之前调用了release()

// stop and release the Media Player, if it's available
if (releaseMediaPlayer && mPlayer != null) {
    mPlayer.reset();
    mPlayer.release();
    mPlayer = null;
}

这真的有必要吗? release不应该处理可能需要的所有内容reset吗?

2 个答案:

答案 0 :(得分:6)

根据文档,release()可以随时执行。没有必要先调用reset(),也不必在之后将播放器设置为null(GC应该在适当的时候处理它)。

来自文档:

  

在release()之后,该对象不再可用。

那就是说,我在MediaPlayer及其文档中遇到了一些问题。这是一个非常复杂的对象,有时会出现一些小错误,特别是在抛出错误之后(没有任何解释错误代码!)

答案 1 :(得分:0)

  

该版本是否应该处理可能需要重置的所有内容?

嗯,MediaPlayer可能非常棘手。您需要了解MediaPlayer可以处于的状态以及这些不同状态中允许的调用。状态图和有效/无效状态在此处 - http://developer.android.com/reference/android/media/MediaPlayer.html#StateDiagram

您提供的代码示例调用reset()的原因只是取消初始化mediaPlayer对象以正确清理所有内容的防御措施。严格来说,如果你只是打电话给release(),一切都应该没问题,但我对此并不是100%肯定。