2016-12-08 4 views
0

バックグラウンドサービスを使用して、自分のアプリのバックグラウンドミュージックをすべてのアクティビティで実行しています。問題は、アプリを実行するとうまくいくが、私がそれを閉じると、デバイスからアンインストールするまで音楽を再生し続けるということだ!Androidアプリの私のバックグラウンドミュージックサービスは、アプリを終了しても引き続き再生されます。

ここで問題は何と思いますか?

/** 
* Created by Naira on 12/5/2016. 
*/ 

public class Background_music extends Service { 
private static final String TAG = null; 
MediaPlayer player; 
public IBinder onBind(Intent arg0) { 

    return null; 
} 
@Override 
public void onCreate() { 
    super.onCreate(); 
    player = MediaPlayer.create(this, R.raw.music); 
    player.setLooping(true); // Set looping 
    player.setVolume(50,50); 

} 
public int onStartCommand(Intent intent, int flags, int startId) { 


    player.start(); 

    return START_STICKY; 
} 

public void onStart(Intent intent, int startId) { 
    // TO DO 
} 
public IBinder onUnBind(Intent arg0) { 
    // TO DO Auto-generated method 
    return null; 
} 

public void onStop() { 


} 
public void onPause() { 


} 
@Override 
public void onDestroy() { 
    player.stop(); 
    player.release(); 
    player = null; 
} 

@Override 
public void onLowMemory() { 

} 
} 

Anはここに私の最初のアクティビティのコードは意図としてそれを実行するには:

Intent svc=new Intent(this, Background_music.class); 
startService(svc); 

そして、もちろん、私はそれを宣言しました。ここ

は、私のバックグラウンドサービスでコードです私のマニフェストで=) 事前に感謝!

+0

なぜSTART_STICKY TAGを使用していますか – Noorul

+0

サービスはあなたのアクティビティが実行されていなくても実行されます。アクティビティを閉じるときにサービスを停止します。 thatsすべて – Noorul

+0

@Naira Hashim: 'BindingService'を使用してください! – AndiGeeky

答えて

1

MainActivityのonDestroy()メソッドでは、サービスを停止する必要があります。

@Override 
    protected void onDestroy() { 
     super.onDestroy(); 
     if(isMyServiceRunning(Background_music.class)) 
     { 
      stopService(new Intent(this, Background_music.class)); 
     } 
    } 


private boolean isMyServiceRunning(Class<?> serviceClass) { 
     ActivityManager manager = (ActivityManager) getSystemService(Context.ACTIVITY_SERVICE); 
     for (ActivityManager.RunningServiceInfo service : manager.getRunningServices(Integer.MAX_VALUE)) { 
      if (serviceClass.getName().equals(service.service.getClassName())) { 
       return true; 
      } 
     } 
     return false; 
    } 

希望します。

+0

ありがとうございます!それは私に多くの= Dを(あなたのために興奮)助けた –

+0

あなたはほとんどwelcome.Enjoyコーディングです –

関連する問題