我有一个应用程序,其中有背景音乐。当我按home键时,背景音乐还在播放。之后,当我点击home键右侧的recent apps按钮,并通过滑动或按X键关闭应用程序时,它会重新启动,就像应用程序再次启动一样,而不是关闭当前播放的音乐。如何解决这个问题?
我在哪里添加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();
}
}
点击Home键显然不能阻止Service
在后台运行,将应用程序从最近列表中滑动也不起作用,操作系统将重新启动Service
,因为START_STICKY
从onStartCommand()
返回。
你只需要在适当的时候(例如在onPause()
中)通过调用stopService()
来停止Service
。
要阻止你的Service
当你的应用程序被滑出最近,你可以覆盖onTaskRemoved()
和调用stopSelf()
从那里:
@Override
public void onTaskRemoved(Intent rootIntent) {
stopSelf();
}