Sobes.tech
Junior — Middle

Kas nutiks, jei pagrindiniame programos sraute atliksite tinklo užklausą?

sobes.tech AI

Atsakymas iš AI

Jei atliksite tinklo užklausą pagrindiniame (UI) sraute Android programoje, tai sukels vartotojo sąsajos užblokavimą iki užklausos pabaigos. Dėl to programa nebeatsako į vartotojo veiksmus, kas gali sukelti ANR (Application Not Responding) – sistemos įspėjimą apie užšalimą.

Todėl tinklo operacijos turi būti vykdomos foniniame sraute, pavyzdžiui, naudojant AsyncTask, Thread, Coroutine arba bibliotekas kaip Retrofit su asinchronijos palaikymu.

Pavyzdys su Kotlin Coroutine:

GlobalScope.launch(Dispatchers.Main) {
    val result = withContext(Dispatchers.IO) {
        // tinklo užklausa
    }
    // UI atnaujinimas su rezultatu
}