2013-02-13 13 views
8

Sto creando un'applicazione di gioco con musica di sottofondo. Ho utilizzato il servizio Android per riprodurre la musica di sottofondo perché volevo eseguire BGM mentre cambiavo attività. il mio problema è che ho dichiarato finish() nel metodo onPause in ogni attività (non voglio lasciare che l'utente restituisca & desidera eliminare l'attività).Servizio di arresto Android all'uscita dall'app

così quando ho intenzione di altre attività chiama suDestroy e interrompe il servizio. Voglio interrompere il servizio esci dall'app (premendo il tasto home) e voglio passare alle attività con BGM e finish() in onPause(). È possibile? o c'è un'altra soluzione?

public class BackgroundMusicService 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.topbgm); 
     player.setLooping(true); // Set looping 
     player.setVolume(100, 100); 
    } 

    public int onStartCommand(Intent intent, int flags, int startId) { 
     player.start(); 
     return 1; 
    } 

    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(); 
     Log.i("service", "service killed"); 
    } 

    @Override 
    public void onLowMemory() { 

    } 
} 

in palese

<service android:name=".BackgroundMusicService" android:process=":remote" /> 

risposta

15

mettere questa linea in attività yout

stopService(new Intent(this, BackgroundMusicService.class)); 

in OnDestroy() metodo in cui si preme il tasto home.

+0

grazie per il fatto reply.I this.if di leggere con attenzione la mia domanda, il problema è quando i cambiamenti di attività, finitura() chiama OnDestroy metodo e arresta il servizio .hai qualche idea? – Hassy31

2

stopService(new Intent(this, BackgroundMusicService.class));

aggiungere questo al tuo metodo onPause() e onDestroy() metodo nella vostra attività principale. Perché se si preme il pulsante Home l'applicazione sarà sullo sfondo per il tempo casuale e il metodo onDestroy() non verrà richiamato non appena si minimizza l'app. Il modo migliore per farlo è metterlo nel metodo onPause(). Il metodo onPause() viene richiamato quando l'attività dell'applicazione non è l'attività preliminare.

+0

grazie per la risposta. Ho provato questo.cosa è che voglio eseguire il servizio mentre si passa attraverso le attività. Ma ho finito() in onPause e invoca il metodo onDestroy – Hassy31

0

sovrascrivere il metodo onUnbind (intenet Intent) in Service

Problemi correlati