2015-11-05 5 views
1

У меня есть следующий код, который воспроизводит некоторые аудио через некоторое время в службе. Проблема заключается в том, что после выхода из приложения медиаплеер продолжает работать; Я хочу остановить воспроизведение звука после того, как приложение было завершено или закрыто.Медиаплеер, играющий даже после выхода из приложения?

Вот мой аудио:

enter image description here

Кстати, десять и три были объявлены на вершине:

MediaPlayer ten; 
MediaPlayer three; 

Я был бы очень признателен любой обратной связи (положительное или отрицательное)! Большое вам спасибо за вашу помощь, сообщите мне, нужен ли вам еще какой-нибудь код.

+1

Вы вызвали stopService() или stopSelf() перед выходом из приложения? – Aakash

+0

@Aakash Нет, только место, которое я назвал stopService, находится в onFinish(). Где еще я должен его назвать? Есть ли какой-нибудь метод, который всегда вызывается при выходе приложения? –

+0

в соответствии с кодом, изображенным на картинке, кажется, что вы расширяете класс обслуживания, вам необходимо остановить службу в вашем onDestroy() вашей деятельности, или если вы можете создать класс приложения и остановить службу в onDestroy() этого класса , это также будет полезно, вам нужно будет определить имя класса приложения в манифесте в этом случае – Aakash

ответ

0

Вариант 1: вы можете использовать службу переднего плана, чтобы ваша служба запускалась только при запуске приложения. Подробнее об услугах переднего плана здесь. http://developer.android.com/guide/components/services.html#Foreground

Вариант2: Прекращение обслуживания с помощью метода onDestroy в действии. Используя этот код

@Override 
    protected void onDestroy() { 
     super.onDestroy(); 
     Intent in = new Intent(YourActivity.this, MyService.class); 
     stopService(in); 
    } 

Рекомендация: Кроме того, вы всегда должны стараться использовать только один объект MediaPlayer и сделать что-то вроде этого:

stopPlaying(); // To stop whatever is currently playing 
mp2 = MediaPlayer.create(YourActivity.this, R.raw.second); 
mp2.start(); 

В вашем случае я бы, вероятно, пойти с option2. Все самое лучшее :)

+0

Эй, проблема с вариантом 2 заключается в том, что пользователь может выйти из приложения из ** другой ** активности. Должен ли я включать это в метод onDestroy каждого отдельного действия? У меня есть 15 видов деятельности ... –

+0

Простая копия вставки метода onDestroy сверху не должна занимать много времени. Или, может быть, вы можете «вернуть START_NOT_STICKY» из onStartCommand() вашей службы. Это лучший вариант. Подробнее об этом читайте здесь: http://developer.android.com/reference/android/app/Service.html#START_NOT_STICKY –

Смежные вопросы