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á.