如何在另一个线程或后台使用R.raw.music1运行音乐?

问题描述 投票:0回答:2

我想在后台或不在主线程上的另一个线程中运行音乐。当我继续单击按钮并调用音乐方法时,然后立即开始音乐,不会有任何延迟,也不会冻结主线程。 请建议执行此操作的完美方法。( 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);
                    }
                }
            });
        }

    }
java android multithreading android-mediaplayer
2个回答
0
投票

您可以使用执行器或简单地生成一个线程并从那里开始播放(我不推荐)


0
投票

用这个:

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();
  }
}
© www.soinside.com 2019 - 2024. All rights reserved.