6

Ist es sinnvoll, eine IntentService für Hintergrund MediaPlayer Playback on demand zu verwenden? Laut der developer's guide dauert ein IntentService nur so lange, wie es tatsächlich funktioniert. Wenn man den resultierenden Overhead der Neuinitialisierung des MediaPlayer jedes Mal betrachtet, wenn ich wieder einen Track spielen möchte, scheint es eine schlechte Idee zu sein ...mit IntentService für MediaPlayer Wiedergabe

Also meine Frage ist: Wie groß ist der tatsächliche resultierende Overhead mit dieser Art von Service. Würde es sich auf die Leistung des Systems/der Anwendung auswirken? Sollte ich stattdessen meine eigene Implementierung von Service mit einem dedizierten Worker-Thread verwenden?

Antwort

11

Ist es sinnvoll, einen IntentService für die Hintergrundwiedergabe von MediaPlayer bei Bedarf zu verwenden?

IMHO, nein, weil Sie Tracks auf diese Weise nicht wirklich ändern können. Darüber hinaus müssen Sie wissen, wann der Track abgeschlossen ist, und Sie können dies nicht tun, außer durch Speicherverlust. Schließlich bedeutet das, dass Android Ihren Prozess beendet, möglicherweise nach Millisekunden, nachdem onHandleIntent() endet, was für einen nutzlosen Musik-Player sorgt.

Soll ich stattdessen meine eigene Implementierung von Service mit einem dedizierten Worker-Thread verwenden?

Möglicherweise benötigen Sie keinen Thread, da ein Großteil von MediaPlayer bereits asynchron ist. Nur wenn Sie Netzwerk-I/O oder Festplatten-I/O oder etwas Eigenes machen, möchten Sie vielleicht Ihren eigenen Thread. Aber ein Service - und wahrscheinlich ein Vordergrund Service - ist der typische Ansatz für einen Musik-Player.

+1

Dementsprechend: [Artikel] (http://developer.android.com/reference/android/media/MediaPlayer.html) 'start()' ist nicht asynchron. Würde das den Thread des Aufrufers nicht blockieren? – wodzu

+1

@ Paweł: Das Diagramm ist falsch. 'start()' ist asynchron. – CommonsWare

+0

@CommonsWare was ist, wenn mein Dienst einen Dienst in der Zwischenzeit Dienst aufgerufen wird, immer wieder heißt, bedeutet manchmal, ich muss eine und manchmal mehrere Audio nacheinander spielen, was schlagen Sie vor? Ich brauche keine Kontrolle über Media Player bedeutet, ich brauche nicht zu pausieren oder zu suchen. Welche kann mitHandleIntent umgehen. Aber im Service muss ich diese Intents manuell mit in onStartCommand behandeln. –

Verwandte Themen