退出应用程序时,按下home键在android



我有一个应用程序,其中有背景音乐。当我按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_STICKYonStartCommand()返回。

你只需要在适当的时候(例如在onPause()中)通过调用stopService()来停止Service

要阻止你的Service当你的应用程序被滑出最近,你可以覆盖onTaskRemoved()和调用stopSelf()从那里:

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

最新更新