Sobes.tech
Junior — Middle

Wie kann man sicherstellen, dass Operationen so ausgeführt werden, dass sie die Benutzeroberfläche nicht blockieren?

sobes.tech KI

Antwort von AI

Damit Operationen die Benutzeroberfläche auf Android nicht blockieren, müssen sie in einem Hintergrund-Thread ausgeführt werden, nicht im Haupt- (UI-)Thread. Dafür kann man verwenden:

  • AsyncTask (veraltet, aber noch in älterem Code vorhanden)
  • HandlerThread oder Handler
  • ExecutorService
  • Kotlin Coroutines (moderne und empfohlene Methode)
  • RxJava

Zum Beispiel kann man mit Coroutines folgendes machen:

GlobalScope.launch(Dispatchers.Main) {
    val result = withContext(Dispatchers.IO) {
        // Lange Operation, z.B. Netzwerkanfrage
        fetchData()
    }
    // UI-Aktualisierung mit dem Ergebnis
    textView.text = result
}

Auf diese Weise wird die schwere Arbeit im Hintergrund-Thread (IO) ausgeführt, und die UI-Aktualisierung erfolgt im Haupt-Thread.