Sobes.tech
Junior — Middle

Kann man Netzwerkoperationen im Haupt-Thread der Anwendung ausführen?

sobes.tech KI

Antwort von AI

Es wird nicht empfohlen, Netzwerkoperationen im Haupt- (UI-)Thread der Anwendung auf Android durchzuführen, und ab Android 3.0 (Honeycomb) ist dies sogar verboten: Bei dem Versuch, eine Netzwerkanfrage im Haupt-Thread auszuführen, wird eine NetworkOnMainThreadException ausgelöst.

Der Hauptgrund ist, die Benutzeroberfläche nicht zu blockieren und Verzögerungen in der Reaktionsfähigkeit der Anwendung zu vermeiden. Netzwerkoperationen können unbegrenzt lange dauern aufgrund von Verzögerungen im Netzwerk, und wenn sie im Haupt-Thread ausgeführt werden, wird die Oberfläche 'einfrieren' und der Benutzer sieht eine Verzögerung.

Der richtige Ansatz ist, Netzwerkanfragen in einem Hintergrund-Thread durchzuführen, z.B. mit AsyncTask (veraltet), Thread, HandlerThread, ExecutorService, oder modernen Mitteln wie Kotlin Coroutines, RxJava, WorkManager usw.