Sobes.tech
Junior — Middle

Jak zajistit, aby operace probíhaly tak, aby nezablokovaly uživatelské rozhraní?

sobes.tech AI

Odpověď od AI

Aby operace ne blokovaly uživatelské rozhraní na Androidu, je třeba je provádět v pozadí, nikoli v hlavním (UI) vlákně. K tomu lze použít:

  • AsyncTask (zastaralé, ale stále se vyskytuje ve starém kódu)
  • HandlerThread nebo Handler
  • ExecutorService
  • Kotlin Coroutines (moderní a doporučený způsob)
  • RxJava

Například pomocí korutin lze postupovat takto:

GlobalScope.launch(Dispatchers.Main) {
    val result = withContext(Dispatchers.IO) {
        // Dlouhá operace, například síťový požadavek
        fetchData()
    }
    // Aktualizace UI s výsledkem
    textView.text = result
}

Tímto způsobem se těžká práce provádí v pozadí (IO), a aktualizace rozhraní v hlavním vlákně.