我有一个有背景音乐的应用程序。当我按下主页按钮时,背景音乐仍在播放。之后当我点击最近的应用程序按钮,在主页按钮的右侧,并通过滑动或按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();
}
}
答案 0 :(得分:1)
单击“主页”按钮显然不会阻止Service
在后台运行,并且将应用程序从“最近”中移出也不起作用,操作系统将重新启动Service
,因为{{1从START_STICKY
返回。
您只需在适当的时候停止onStartCommand()
(例如,Service
),然后致电onPause()
。
要在您的应用从“最近”中删除时停止stopService()
,您可以覆盖Service
并从那里拨打onTaskRemoved()
:
stopSelf()