Android Studio(Java)MediaPlayer问题:停止后无法重新播放
解决MediaPlayer停止后无法重新播放的问题
问题根源在于:调用stop()后,MediaPlayer会进入Stopped状态,此状态下无法直接调用start()恢复播放,必须先重置并重新准备音频资源。
修改后的完整代码
private Button buttonMusic; private MediaPlayer musicSound; private Context mContext; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.your_layout_id); // 替换为你的布局ID mContext = this; buttonMusic = findViewById(R.id.buttonMus); initMediaPlayer(); buttonClick(); } private void initMediaPlayer() { musicSound = MediaPlayer.create(mContext, R.raw.music); musicSound.setLooping(true); } public void buttonClick() { buttonMusic.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { toggleMusicPlayback(); } }); } private void toggleMusicPlayback() { if (musicSound.isPlaying()) { musicSound.stop(); musicSound.release(); musicSound = null; } else { if (musicSound == null) { initMediaPlayer(); } musicSound.start(); } } // 页面销毁时释放资源,避免内存泄漏 @Override protected void onDestroy() { super.onDestroy(); if (musicSound != null) { musicSound.release(); musicSound = null; } }
核心修改说明
- 停止播放时,调用
release()释放当前MediaPlayer资源并置空实例 - 再次播放前检查实例状态,为空则重新初始化MediaPlayer
- 提前在初始化方法中设置循环播放,避免重复调用
- 添加页面销毁时的资源释放逻辑,规范内存管理
内容的提问来源于stack exchange,提问作者Oganes
相关产品推荐
相关产品推荐

