2012-10-26 12 views
6

Hi Ho bisogno di un'istanza di MediaPlayer per l'esecuzione in background, quindi ho iniziato a utilizzare un servizio.MediaPlayer in thread separati utilizzando Service o IntentService

Tutto funziona correttamente ma ottengo ANR (l'applicazione non risponde) dopo un po ', anche se l'interfaccia utente funziona perfettamente. Abbastanza corretto, so che i servizi sono ancora in esecuzione sul thread principale, quindi l'ANR ha senso.

Così ho provato a utilizzare IntentService, che dovrebbe generare il proprio thread ma non ho ottenuto altro che mal di testa. IntentService sembra ok quando i lavoratori sono indipendenti ma non è questo il caso perché devo chiamare il metodo startService (intent) dall'app principale ogni volta che ho bisogno di cambiare traccia e non voglio finire con più istanze di MediaPlayer che giocare uno sopra l'altro ..

Ho anche visto un suggerimento suggerendo di utilizzare un thread all'interno di un servizio. come posso farlo con Media Player? La DICHIARAZIONE dovrebbe essere in quel thread o solo "preparare/iniziare, ecc"? Da quello che ho visto non sembra funzionare ma potrei semplicemente averlo sbagliato

Qualsiasi suggerimento è molto apprezzato, possibilmente con un esempio molto semplice.

applausi

+0

hey Vorrei sapere cosa hai deciso per avere lo stesso identico caso d'uso e non sono sicuro di quale classe utilizzare se IntentService o solo servizio. – commonSenseCode

risposta

4

vi consiglio caldamente di leggere la documentazione di formazione qui: http://developer.android.com/guide/components/services.html

questo è stato davvero utile per me. E poi l'app NPR che trasmette l'audio è open source, quindi dai un'occhiata qui al loro servizio: http://code.google.com/p/npr-android-app/source/browse/Npr/src/org/npr/android/news/PlaybackService.java

Leggendoli entrambi, ti consiglio di utilizzare un Servizio e gestire i fili da solo. Non ho ancora lavorato con IntentService, ma dalla tua esperienza sembra che sia la classe sbagliata a gestire lo streaming musicale. Spero possa aiutare!

Problemi correlati