2015-11-05 112 views
1

我有以下代碼,它在服務中播放一段時間後會播放一​​些音頻。問題是,在退出應用後,媒體播放器繼續運行;我想在應用程序退出或關閉後停止播放音頻。即使在退出應用後,Mediaplayer仍在播放?

這裏是我的聲音:

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

Option2:在Activity中停止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(); 

在你的情況,我可能會與選項2去。 All the Best :)

+0

嘿,選項二的問題是用戶可能會從** ** **活動退出應用程序。我必須把它放在每個活動的onDestroy方法中嗎?我有15個活動... –

+0

上面的onDestroy方法的簡單複製粘貼不應該花費太多時間。或者,也許你可以從你的服務的onStartCommand()返回START_NOT_STICKY'。這似乎是一個更好的選擇。在這裏閱讀更多關於它的內容:http://developer.android.com/reference/android/app/Service.html#START_NOT_STICKY –

相關問題