2010-04-18 8 views
5

È possibile interrompere tutti i servizi avviati quando l'utente preme il pulsante Home?Arresta tutti i servizi avviati sull'app Chiudi/Esci

io uso:

startService(new Intent(ClassName.this, ClassName2.class)); 
stopService(new Intent(ClassName.this, ClassName2.class)); 

Questo significa che dovrò aggiungere qualche modo il 'StopService()' per più di 7 dei miei corsi app ho studiato questo argomento e penso che ci sia 'onTerminate' ma ancora non sono sicuro di come dovrebbe essere implementato.

Qualsiasi aiuto o suggerimento sarebbe apprezzato! Grazie!

risposta

16

E 'possibile fermare tutto è cominciato servizi quando l'utente preme il tasto di casa ?

Non direttamente. Per i principianti, non hai modo di sapere che hanno premuto HOME.

Se si desidera che il servizio sia in esecuzione mentre le attività lo utilizzano, prendere in considerazione l'eliminazione di startService(). Utilizzare invece bindService() nei metodi onStart() delle attività che richiedono il servizio e chiamare lo unbindService() nei corrispondenti metodi onStop(). È possibile utilizzare BIND_AUTO_CREATE per far sì che il servizio sia pigro-avviato quando necessario e Android interromperà automaticamente il servizio dopo che tutte le connessioni sono state non associate.

+0

Grazie per la risposta. Tutto ciò ha senso, una cosa però, ci sono più informazioni su "BIND_AUTO_CREATE"? Comprendo il concetto di 'servizio', ma non sono ancora sicuro di come manterrei la musica tra le mie 7+ attività, ma la interrompo quando l'utente accede alla 'schermata principale'. Se qualcun altro ha lo stesso problema, ho trovato un buon articolo sui servizi Android qui: http://www.androidcompetencycenter.com/2009/01/basics-of-android-part-iii-android-services/ –

+0

Your il modello desiderato sarà difficile da implementare. Ecco perché la maggior parte dei music player non fa quello che fai - in particolare * vuole * la musica che suona quando l'utente preme HOME, offrendo una notifica per un rapido accesso all'app per fermare la musica. In effetti, sarà impossibile per te implementare questo modello appositamente per HOME. Probabilmente è possibile implementare questo modello per "nessuna delle mie attività è in primo piano", tenendo una bandiera di tutte le attività in primo piano, oltre a un watchdog che chiude la musica se il flag è falso per troppo tempo. – CommonsWare

+0

Sì, questo è solo per un gioco, quindi quando il gioco è sospeso/sospeso la musica non verrà riprodotta. Ho notato che posso usare onPause() perché smetta di giocare se premo 'HOME' ma l'unico problema è che si ferma quando procedo nel menu di gioco. Eventuali suggerimenti per risolvere questo problema? –

2

Se si desidera interrompere i servizi quando l'utente lascia la propria app, chiederei se si desidera utilizzare i servizi. Potresti semplicemente rendere la tua applicazione molto più complicata di quanto dovrebbe essere.

Inoltre, questa linea è davvero discutibile:

 
startService(new Intent(ClassName.this, ClassName2.class)); 

È in corso un'Intent la cui azione è il nome di classe di una classe, ed i dati URI è il nome di classe di un'altra classe ...! Forse intendi qualcosa come "new Intent (context, MyService.class)"?

+0

Grazie per il tuo contributo, sto solo provando ad ascoltare musica nella mia app. Dispongo anche di impostazioni audio/musicali per spegnerlo e così via. Inoltre correggerò la parte "nuovo intent". –

+0

Ok. Non hai bisogno di un servizio per far suonare la musica, comunque. – hackbod

Problemi correlati