2016-08-08 208 views
1

我有一個包含背景音樂的應用程序。當我按Home鍵時,背景音樂仍在播放。之後,當我點擊最近的應用程序按鈕,在主頁按鈕的右側,通過滑動或按下X關閉應用程序時,它將重新啓動,就好像應用程序再次啓動,而不是關閉當前播放的音樂。我該如何解決這個問題?在Android中按下home按鈕時退出應用程序

我在哪裏添加onTaskRemoved()方法?

package com.example.dmacs.myapplication; 

/** 
* Created by dmacs on 4/8/16. 
*/ 
import android.app.Service; 
import android.content.Intent; 
import android.media.MediaPlayer; 
import android.os.IBinder; 

import java.util.Random; 

/** 
* Created by digen on 3/8/16. 
*/ 
public class BackgroundAudioService extends Service implements MediaPlayer.OnCompletionListener { 
    MediaPlayer mediaPlayer; 

    @Override 
    public IBinder onBind(Intent intent) { 
     return null; 
    } 

    @Override 
    public void onCreate() { 
     int mfile[] = new int[5]; 

     mfile[0]= R.raw.bgm1; 
     mfile[1]= R.raw.bgm2; 
     mfile[2]= R.raw.bgm3; 
     mfile[3]= R.raw.bgm4; 
     mfile[4]= R.raw.bgm5; 

     Random random = new Random(); 
     int Low = 0; 
     int High = mfile.length; 
     int randomInt = random.nextInt(High-Low) + Low; 



     mediaPlayer = MediaPlayer.create(this, mfile[randomInt]);// raw/s.mp3 
     mediaPlayer.setOnCompletionListener(this); 
    } 

     @Override 
     public int onStartCommand (Intent intent,int flags, int startId){ 
      if (!mediaPlayer.isPlaying()) { 
       mediaPlayer.start(); 
      } 
      return START_STICKY; 
     } 

    public void onDestroy() { 
     if (mediaPlayer.isPlaying()) { 
      mediaPlayer.stop(); 
     } 
     mediaPlayer.release(); 

    } 

    public void onCompletion(MediaPlayer _mediaPlayer) { 
     stopSelf(); 
    } 



} 
+0

嘗試重寫的onPause()方法,這就是所謂的在家裏按下按鈕 –

+0

當您向右滑動或按下最近的應用程序中的X按鈕,它會關閉應用程序。你所得到的是正確的行爲。除非你問爲什麼你的Android服務關閉。 – Sufian

+0

我在問的是,背景音樂不斷播放主頁上的按鈕按下,當在最近的應用程序中刷或按x關閉,它再次開始一切 – Sanik

回答

1

點擊Home鍵顯然不會停止Service在後臺運行,並刷卡應用程序在最近用過的也不會工作,操作系統將重新啓動,因爲的ServiceSTART_STICKYonStartCommand()返回。

您只需在適當的時候(例如在onPause()中)通過撥打stopService()來停止Service

要停止Service當你的應用是越來越刷出最近用過的,你可以只覆蓋onTaskRemoved(),並從那裏調用stopSelf()

@Override 
public void onTaskRemoved(Intent rootIntent) { 
    stopSelf(); 
} 
+0

謝謝。這是工作。 – Sanik

相關問題