Должна ли фоновая музыка приложения иметь собственную нить?
Я пытаюсь создать приложение, в котором музыкальный фрагмент воспроизводится при каждом вызове onCreate(), и я хочу, чтобы эта музыка воспроизводилась во всем приложении, то есть во всех действиях. что я до сих пор делал, так это создавал Thread внутри OnCreate(), и я назвал его backgroundMusic, внутри него я создал объект MediaPlayer из музыкальной пьесы в моей папке Raw. учитывая, что сама музыка запускается только в течение минуты или около того, а среднее время, затрачиваемое на приложение, больше, я сделал цикл Loop, который, пока приложение работает, проверяет, играет ли музыка, если нет, то вызывает start();
backgroundMusic = new Thread(new Runnable() {
@Override
public void run() {
while ( appIsRunning ){
if( ! music.isPlaying () ){
music.start();
}
}
}
});backgroundMusic.start();
код работает очень хорошо, однако я заметил некоторое отставание, особенно позже, когда загружаются некоторые другие потоки и изображения. Что я хочу спросить, это подходящий способ воспроизведения фоновой музыки? Есть ли лучший, более эффективный способ сделать это? Кроме того, как я могу остановить музыку, когда приложение закрывается?
1 ответ
это подходящий способ воспроизведения фоновой музыки?
Нет, вам нужно объявить музыку на сервисе. Услуга:
Будет независим от активности LifeCycle, поэтому музыка будет продолжать играть, когда активность закрыта
может быть приостановлено при необходимости как входящий звонок
Вот кое-что, чтобы вы начали. Удачного кодирования!