6

È ragionevole utilizzare uno per la riproduzione dello sfondo MediaPlayer su richiesta? Secondo lo developer's guide un IntentService dura solo finché funziona effettivamente. Considerando il sovraccarico risultante di reinizializzazione del MediaPlayer ogni volta che voglio riprodurre una traccia, sembra essere una cattiva idea ...utilizzando IntentService per la riproduzione di MediaPlayer

Quindi la mia domanda è: Quanto è grande l'overhead risultante effettivo utilizzando questo tipo di Service. Avrebbe un impatto percettibile sulle prestazioni del sistema/dell'applicazione? Devo utilizzare la mia implementazione di Service con un thread di lavoro dedicato?

risposta

11

È ragionevole utilizzare un IntentService per la riproduzione di MediaPlayer in background su richiesta?

IMHO, no, perché non è possibile cambiare le tracce in questo modo. Inoltre, è necessario sapere quando la traccia è completa e non è possibile farlo in questo modo, tranne che perde memoria. Infine, significa che Android interromperà il processo, possibilmente in millisecondi dopo i limiti onHandleIntent(), il che rende il lettore musicale inutile.

Devo utilizzare la mia implementazione del servizio con un thread di lavoro dedicato?

Potrebbe non essere necessario un thread, poiché la quantità di MediaPlayer è già asincrona. Solo se si eseguono operazioni di I/O di rete o I/O su disco o qualcosa di proprio, si potrebbe desiderare il proprio thread. Ma avere uno Service - e probabilmente un primo piano Service - è l'approccio tipico per un lettore musicale.

+1

In base a questo: [articolo] (http://developer.android.com/reference/android/media/MediaPlayer.html) 'start()' non è asincrono. Questo non bloccherebbe la discussione del chiamante? – wodzu

+1

@ Paweł: il diagramma non è corretto. 'start()' è asincrono. – CommonsWare

+0

@CommonsWare cosa succede se il mio servizio è in riproduzione mentre nel frattempo il servizio viene chiamato, ancora e ancora, a volte ho bisogno di riprodurre uno e talvolta più audio uno per uno, cosa suggerisci? Non ho bisogno di controlli su media player significa che non ho bisogno di mettere in pausa o cercare. Che può gestire onHandleIntent. Ma in servizio ho bisogno di gestire questi intenti manualmente con in onStartCommand. –