我想在后台或不在主线程上的另一个线程中运行音乐。当我继续单击按钮并调用音乐方法时,然后立即开始音乐,不会有任何延迟,也不会冻结主线程。 请建议执行此操作的完美方法。( AsyncTask 不起作用)
public static void wrongMove() {
if (music) {
backgroundHandler.post(new Runnable() {
@Override
public void run() {
if (MainActivity.music) {
final MediaPlayer musicPlayer = MediaPlayer.create(MainActivity.mainRelative.getContext(), R.raw.wrong_move);
musicPlayer.start();
musicPlayer.setOnCompletionListener(MediaPlayer::release);
}
}
});
}
}
您可以使用执行器或简单地生成一个线程并从那里开始播放(我不推荐)
用这个:
public static void playBackgroundMusic() {
if (music) {
new Thread(new Runnable() {
@Override
public void run() {
MediaPlayer musicPlayer = MediaPlayer.create(MainActivity.this, R.raw.wrong_move);
musicPlayer.start();
musicPlayer.setOnCompletionListener(MediaPlayer::release);
}
}).start();
}
}