Sobes.tech
Junior — Middle

Může hlavní vlákno provádět síťové požadavky bez blokování nebo problémů s výkonem?

sobes.tech AI

Odpověď od AI

V Androidu by hlavní (UI) vlákno nemělo provádět přímo síťové požadavky, protože to způsobuje zablokování rozhraní a zhoršení výkonu aplikace. Síťové operace mohou trvat značnou dobu, a pokud jsou prováděny v hlavním vlákně, aplikace přestane reagovat na akce uživatele.

Pro zabránění zablokování se používají:

  • Asynchronní úlohy (AsyncTask, i když jsou nyní zastaralé)
  • Vlákna (Thread, HandlerThread)
  • Knihovny s podporou asynchronnosti (například Retrofit s Coroutines)
  • Kotlin Coroutines nebo RxJava

Příklad s Kotlin Coroutines:

GlobalScope.launch(Dispatchers.Main) {
    val result = withContext(Dispatchers.IO) {
        // Provádění síťového požadavku na pozadí
        fetchDataFromNetwork()
    }
    // Aktualizace UI s výsledkem
    updateUI(result)
}

Tímto způsobem hlavní vlákno není blokováno a aplikace zůstává citlivá.