在android中按下主页按钮时退出应用程序

时间:2016-08-08 08:18:27

标签: android

我有一个有背景音乐的应用程序。当我按下主页按钮时,背景音乐仍在播放。之后当我点击最近的应用程序按钮,在主页按钮的右侧,并通过滑动或按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();
    }



}

1 个答案:

答案 0 :(得分:1)

单击“主页”按钮显然不会阻止Service在后​​台运行,并且将应用程序从“最近”中移出也不起作用,操作系统将重新启动Service,因为{{1从START_STICKY返回。

您只需在适当的时候停止onStartCommand()(例如,Service),然后致电onPause()

要在您的应用从“最近”中删除时停止stopService(),您可以覆盖Service并从那里拨打onTaskRemoved()

stopSelf()