2016-08-08 3 views
1

나는 배경 음악이있는 응용 프로그램을 가지고 있습니다. 홈 버튼을 누르면 배경 음악이 계속 재생됩니다. 그런 다음 집 버튼 오른쪽의 최근 앱 버튼을 클릭하고 스 와이프하거나 X 키를 눌러 앱을 닫으면 현재 재생중인 음악을 닫지 않고 애플리케이션이 다시 시작되는 것처럼 다시 시작됩니다. 이 문제를 어떻게 해결합니까?안드로이드의 홈 버튼을 누를 때 앱 종료

어디에서 onTaskRemoved() 메소드를 추가합니까? 백그라운드에서 실행 중 하나가 작동하지 않습니다 최근 통화 중 응용 프로그램을 안으로들 Service을 멈추지 않을 것입니다 분명 홈 버튼을 클릭

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

을 홈 버튼이 –

+0

때를 누르면이 호출 onPause() 메소드를 오버라이드 (override) 시도 최근 앱에서 스 와이프 - 오른쪽 또는 X 버튼을 누르면 앱이 종료됩니다. 당신이 얻는 것은 올바른 행동입니다. 안드로이드 서비스가 왜 닫혀 있는지 묻지 않는 한. – Sufian

+0

내가 묻는 바는 배경 음악이 집에있는 버튼을 계속 누르고 있고 최근 앱에서 스 와이프하거나 x를 눌러 닫으면 다시 시작된다는 것입니다. – Sanik

답변

1

는 OS가 START_STICKYonStartCommand()에서 반환 된 Service 때문에 다시 시작됩니다.

stopService()을 호출하여 Service (예 : onPause())을 중지하면됩니다. 앱이 최근 통화에서 슬쩍하기 때 중지하려면

당신의 Service, 당신은 단지 onTaskRemoved()을 무시하고 거기에서 stopSelf()를 호출 할 수 있습니다

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

고마워요. 그것은 효과가있다. – Sanik

관련 문제