Ich streame also Musik in einem separaten Thread. Wenn ich die App verlasse ( onPause()
, onStop()
angerufen werden usw.), die Musik spielt weiter, aber schließlich - nachdem ich andere Anwendungen geöffnet und zwischen ihnen gewechselt habe und zum Startbildschirm zurückgekehrt bin - wird meine Anwendung beendet. Kein Absturz, nur ein WIN DEATH
y process com.myapp.android has died
in logcat. Offensichtlich ist es legitim, dass Anwendungen vom System zerstört werden, um Ressourcen zurückzugewinnen.
Meine Frage ist: bedeutet das Ausführen von Sachen in einem Thread außerhalb des Haupt-(UI)-Threads, dass es jetzt weniger Priorität hat, soweit das System betroffen ist? Das heißt, ist es wahrscheinlicher, dass es beendet wird, als wenn ich den Media Player in einem Service
und verwenden sogar startForeground()
um den Dienst im Vordergrund laufen zu lassen?
Für jeden Gedanken oder jede Klarstellung wären wir Ihnen sehr dankbar!
EDITAR
Außerdem verwirrt mich ein Teil der Dokumentation über Dienste. Dort heißt es unter anderem:
Vorsicht! Ein Dienst läuft im Haupt-Thread seines Hosting-Prozesses - dem Dienst erstellt keinen eigenen Thread und läuft nicht in einem separaten Prozess (sofern Sie nichts anderes angeben). Das bedeutet, dass, wenn Ihr Dienst CPU-intensive Arbeit oder blockierende (z.B. MP3-Wiedergabe oder Netzwerkbetrieb), sollten Sie einen neuen Thread innerhalb des Dienstes erstellen, um diese Arbeit zu erledigen.
Ich habe die MP3-Wiedergabe immer in einem Dienst auf dem Hauptthread laufen lassen, und die Benutzeroberfläche war immer ansprechbar. Wenn ich es in einem separaten Thread setzen soll, wie in dem obigen Zitat empfohlen, dann werde ich nicht am Ende wieder, wo ich begann, nämlich mit der Medienwiedergabe aus dem Haupt-Thread auftreten, wodurch die Wahrscheinlichkeit, dass die Wiedergabe beendet wird, wenn andere Anwendungen geöffnet werden, usw.?