Если вы хотите воспроизводить фоновую музыку только для своего приложения, то воспроизводите ее в потоке, запущенном из вашего приложения, или используйте класс AsyncTask, чтобы сделать это за вас.
Концепция служб заключается в запуске вфон;Под фоном обычно подразумевается, когда пользовательский интерфейс вашего приложения равен NOT VISIBLE .Правда, его можно использовать так же, как у вас (если вы помните, чтобы остановить его), но это просто неправильно, и он потребляет ресурсы, которые вы не должны использовать.
Если вы хотите выполнять задачи в фоновом режимевашей активности , используйте AsyncTask.
Кстати, onStart
устарела.Когда вы пользуетесь услугами, внедряйте onStartCommand
.
ОБНОВЛЕНИЕ:
Я думаю, что этот код будет работать для вас.Добавьте этот класс (вложен в ваш класс активности).
public class BackgroundSound extends AsyncTask<Void, Void, Void> {
@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);
}
Это будет работать.