Warum Service verwenden, wenn es im gleichen Thread in Android läuft

Ich war durchBound Service auf der Android Developer-Website. Ich dachte, ich verstehe den Dienst genug, aber ich habe gerade eine andere Möglichkeit gefunden, den Dienst durch Verwenden eines @ zu verbindeMessenger Klasse speziell für den lokalen Service. Dort wurde ich verwirrt. Vielleicht habe ich das Konzept falsch verstanden.

Hier ist mein Verständnis von AndroidService. Sie erstellen einen Service, wenn

Sie möchten separate Jobs im @ ausführHintergrun.Sie möchten es zu einem separaten Prozess machen.Sie möchten, dass es in einem Lebenszyklus ausgeführt wird, der unabhängig von der Komponente ist, von der es gestartet wurde.

Confusion ist das erste Element in der Liste, die Definition des Hintergrunds. Ist der Hintergrund nicht ein Thread oder ein Prozess? Ich hätte nie gedacht, dass es auf dem Hauptthread laufen kann.

Hier ist die Warnung vor dem Service in den Dev-Seiten zu.

Vorsich: Ein Dienst wird im Hauptthread seines Hostprozesses ausgeführt. Der Dienst erstellt keinen eigenen Thread und wird nicht in einem separaten Prozess ausgeführt (sofern nicht anders angegeben). Dies bedeutet, dass Sie einen neuen Thread innerhalb des Dienstes erstellen sollten, wenn Ihr Dienst CPU-intensive Arbeit verrichtet oder Vorgänge blockiert (z. B. MP3-Wiedergabe oder Netzwerkbetrieb). Durch die Verwendung eines separaten Threads wird das Risiko von ANR-Fehlern (Application Not Responding) verringert, und der Haupt-Thread der Anwendung kann für die Benutzerinteraktion mit Ihren Aktivitäten reserviert bleiben.

Frage

Warum wählt man den Dienst, wenn die Dienstfunktion auf dem Hauptthread ausgeführt wird? Müssen wir nur einen Dienst schreiben, um ANR zu blockieren, auch wenn die zeitaufwändige Arbeit im Hauptthread erledigt ist? Angenommen, der Dienst ist nur für meine Anwendung bestimmt. Gibt es praktische Fälle oder Gründe, einen Dienst als privat zu nutzen und im selben Thread zu laufen?

Antworten auf die Frage(4)

Ihre Antwort auf die Frage