2016-08-08 147 views
1

我有一个包含背景音乐的应用程序。当我按Home键时,背景音乐仍在播放。之后,当我点击最近的应用程序按钮,在主页按钮的右侧,通过滑动或按下X关闭应用程序时,它将重新启动,就好像应用程序再次启动,而不是关闭当前播放的音乐。我该如何解决这个问题?在Android中按下home按钮时退出应用程序

我在哪里添加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

尝试重写的onPause()方法,这就是所谓的在家里按下按钮 –

+0

当您向右滑动或按下最近的应用程序中的X按钮,它会关闭应用程序。你所得到的是正确的行为。除非你问为什么你的Android服务关闭。 – Sufian

+0

我在问的是,背景音乐不断播放主页上的按钮按下,当在最近的应用程序中刷或按x关闭,它再次开始一切 – Sanik

回答

1

点击Home键显然不会停止Service在后台运行,并刷卡应用程序在最近用过的也不会工作,操作系统将重新启动,因为的ServiceSTART_STICKYonStartCommand()返回。

您只需在适当的时候(例如在onPause()中)通过拨打stopService()来停止Service

要停止Service当你的应用是越来越刷出最近用过的,你可以只覆盖onTaskRemoved(),并从那里调用stopSelf()

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

谢谢。这是工作。 – Sanik

相关问题