Якщо ви хочете відтворити фонову музику лише для свого додатка, відтворити його у потоці, запущеному з вашого додатка/використовувати клас AsyncTask, щоб зробити це для вас.
Концепція сервісів полягає в тому, щоб працювати у фоновому режимі; У фоновому режимі значення має значення, коли користувальницький інтерфейс програми НЕВИЗНИЙ . Правда, його можна використовувати так само, як у вас є (якщо ви пам'ятаєте, що це зупиняєш), але це просто не правильно, і він споживає ресурси, які ви не повинні використовувати.
Якщо ви хочете виконати завдання на фоні вашої активності , використовуйте AsyncTask.
До речі, onStart
не підтримується. Коли ви користуєтесь службами, застосуйте onStartCommand
.
UPDATE:
Я думаю, що цей код буде працювати для вас. Додайте цей клас (додано у ваш клас активності).
public class BackgroundSound extends AsyncTask {
@Override
protected Void doInBackground(Void... params) {
MediaPlayer player = MediaPlayer.create(YourActivity.this, R.raw.test_cbr);
player.setLooping(true);//Set looping
player.setVolume(1.0f, 1.0f);
player.start();
return null;
}
}
Тепер, щоб керувати музикою, збережіть свій об'єкт BackgroundSound, а не створювати його анонімно. Оголосити це як поле у вашій діяльності:
BackgroundSound mBackgroundSound = new BackgroundSound();
За методом onResume вашої діяльності, розпочніть його:
public void onResume() {
super.onResume();
mBackgroundSound.execute(null);
}
А на методі onPause у вашій активності зупиніть це:
public void onPause() {
super.onPause();
mBackgroundSound.cancel(true);
}
Це буде працювати.