......
    mMediaPlayer = new MediaPlayer();
    initialMediaPlayerData();
    ......private void initialMediaPlayerData() {
Log.e(TAG, "initialMediaPlayerData");
try {
Log.d(MYTAG,"mMediaPlayer  prepare !");
mMediaPlayer.setDataSource(parentContext, mSelectedUri);
mMediaPlayer.setOnCompletionListener(listener);
mMediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
mMediaPlayer.prepare();

catch (IOException e) 
{
Log.e("MusicPicker", "Unable to play track", e);
}
}    以上的代码在我的一个APK中,现在发现一个奇怪的问题:
    在AP第一次运行的时候,一切正常。
    按back建关闭AP以后,再次启动AP的时候,运行到mMediaPlayer.prepare()函数的时候,发生IllegalStateException异常,求解释~

解决方案 »

  1.   

    When a MediaPlayer object is just created using new or after reset() is called, it is in the Idle state; and after release() is called, it is in the End state. Between these two states is the life cycle of the MediaPlayer object. 
      

  2.   

        有关闭的。
         public void onStop()
    {
    mMediaPlayer.stop();
    mMediaPlayer.release();
    mMediaPlayer = null;
    }
        
      

  3.   

    MediaPlayer 采用new 或者reset()创建时,处于空闲状态
    只有当调用release()后MediaPlayer才关闭所以再activity关闭时,在onDestory()中 要讲MediaPlayer 关闭,即调用media.release();