Ich habe auf http://developer.android.com eine Erklärung gelesen , in der es heißt:
Wenn eine Anwendung gestartet wird, erstellt das System einen Ausführungsthread für die Anwendung mit dem Namen "main". Dieser Thread ist sehr wichtig, da er für das Versenden von Ereignissen an die entsprechenden Widgets der Benutzeroberfläche zuständig ist, einschließlich des Zeichnens von Ereignissen. Es ist auch der Thread, in dem Ihre Anwendung mit Komponenten aus dem Android UI Toolkit interagiert. Das System erstellt nicht für jede Instanz einer Komponente einen eigenen Thread. Alle Komponenten, die im selben Prozess ausgeführt werden, werden im UI-Thread instanziiert, und Systemaufrufe an jede Komponente werden von diesem Thread gesendet.
Ich wollte nur wissen, warum Android sich für diese Single-Threaded-Modellarchitektur entschieden hat und nicht für Multi-Threaded. Was sind die Vorteile, die sie daraus ziehen?
quelle
Antworten:
Android-Apps sind nicht Single-Threaded. Obwohl es einen Hauptthread gibt, wie in der von Ihnen zitierten Dokumentation beschrieben, können Apps so viele andere Threads starten, wie sie benötigen.
Der Vorteil aller GUI-Interaktionen in einem Thread besteht darin, dass der GUI-Code einfacher, schneller und vorhersehbarer sein kann, da der GUI-Status nicht gleichzeitig von verschiedenen Threads aus geändert wird. Es erleichtert App-Entwicklern auch die Thread-Sicherheit, indem es eine Nachrichtenwarteschlange bereitstellt, ähnlich wie in den GUI-Frameworks anderer Betriebssysteme. Der App-Autor muss nur sicherstellen, dass alle langen Vorgänge in Hintergrund-Threads ausgeführt werden, und Nachrichten an den Haupt-Thread zurücksenden, um die GUI zu aktualisieren. Auf diese Weise reagiert die GUI die ganze Zeit.
quelle
int main()
in C oderpublic static void main(String[] args)
in Java und so weiter. Es läuft als Hauptbestandteil Ihrer Anwendung, da etwas der Ausgangspunkt sein muss.NetworkOnMainThreadException
beweist nur, dass eine Android-App mehrere Threads unterstützt (und manchmal benötigt), um funktionsfähig zu funktionieren.In den Android-Dokumenten heißt es nur, dass der Hauptthread alle Funktionen der Benutzeroberfläche berechnen soll. Es ist die Aufgabe des Entwicklers, zusätzliche Threads zu erstellen, wenn Daten aus der lokalen SQLite-Datenbank oder aus dem Netzwerk abgerufen werden oder wenn Sie eine rechenintensive benutzerdefinierte Ansicht mit viel Anzeigelogik erstellen.
Einen wirklich umfassenden Einblick in die Parallelität in Android und das Multithreading finden Sie unter
Asynchrones Android von Steve Liles
Super tolles Buch.
quelle