2016-12-08 4 views
0

Ich benutze einen Hintergrunddienst, um Hintergrundmusik für meine App in all ihren Aktivitäten zu spielen! Das Problem ist, dass wenn die App läuft, es gut funktioniert, aber wenn ich es schließe, spielt es die Musik weiter, bis ich es vom Gerät deinstalliere!Mein Hintergrundmusikdienst in der Android App wird auch dann wiedergegeben, wenn ich die App schließe

Was denken Sie, das Problem hier?

Hier ist der Code in meinem Hintergrund Service:

/** 
* 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() { 

} 
} 

Ein hier der Code in meiner ersten Tätigkeit es als Absicht zu laufen:

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

Und es natürlich habe ich erklären in meinem Manifest =) Vielen Dank im Voraus!

+0

Warum verwenden Sie START_STICKY TAG – Noorul

+0

Dienst ausgeführt wird auch Ihre Aktivität nicht ausgeführt wird. Stoppen Sie Ihren Dienst, wenn Sie die Aktivität schließen. das ist alles – Noorul

+0

@Naira Hashim: Verwende 'BindingService'! – AndiGeeky

Antwort

1

In der onDestroy() Methode Ihrer MainActivity müssen Sie den Dienst stoppen.

@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; 
    } 

Hoffe das hilft Ihnen.

+0

Vielen Dank! Es hat mir sehr geholfen = D (schlägt für dich) –

+0

Sie sind herzlich willkommen.Enjoy Coding –

Verwandte Themen