如何正确停止媒体播放器,android

点击歌曲的列表,我可以用MedaiPlayer播放歌曲。 当一首歌曲正在播放,如果用户点击另一首歌曲,然后我停止媒体播放器,并再次启动播放器。 但是我在reset()中得到非法的状态。 这里是我得到例外的代码。 如何正确地阻止玩家? 也为什么我得到这个例外。 如何避免它?

public void stopPlayer() { try { if (player != null) { // Log.e("Trying to Stop "," Player "); player.stop(); player.release(); player.reset();// causes IllegalstateException player = null; } } catch (Exception e) { player = null; playerStatus = false; e.printStackTrace(); } } 

Solutions Collecting From Web of "如何正确停止媒体播放器,android"

尝试这个 :

 player.reset(); player.release(); 

还可以看看媒体播放器状态图 。

如果你想再次玩,那么使用player.reset()player.release()意味着它释放玩家对象,所以你必须重新初始化玩家。 所以首先你使用reset()然后release() 。 当播放器对象不再工作时,使用release() 。 当你的活动破坏了release()方法用于良好的做法。

每当你想停止它:

 if(player!=null) { if(player.isPlaying()) player.stop(); player.reset();//It requires again setDataSource for player object. } 

每当你的球员不再需要:

 if(player!=null) { if(player.isPlaying()) player.stop(); player.reset();//It requires again setDataSource for player object. player.release(); player=null; // fixed typo. } 

虽然接受的答案是有效的,但这是一个更好的方法来完成任务

 private void stopSong() { if(mediaPlayer!=null) { if(mediaPlayer.isPlaying()) { mediaPlayer.reset();// It requires again setDataSource for player object. mediaPlayer.stop();// Stop it mediaPlayer.release();// Release it mediaPlayer = null; // Initialize it to null so it can be used later } } } 

你打算重新使用玩家,还是你玩家完成了? 如果你已经完成了播放器,请调用release()而不是reset()。 如果您打算重新使用播放器,请调用reset()而不是release()。

reset()将播放器重置为未初始化状态。 release()释放与玩家相关的所有资源。