Junior — Middle
Kas notiks, ja veiksiet tīkla pieprasījumu galvenajā programmā?
sobes.tech AI
Atbilde no AI
Ja veicat tīkla pieprasījumu galvenajā (UI) pavedienā Android lietotnē, tas novedīs pie lietotāja saskarnes bloķēšanas līdz pieprasījuma pabeigšanai. Rezultātā lietotne pārtrauks reaģēt uz lietotāja darbībām, kas var izraisīt ANR (Application Not Responding) – sistēmas brīdinājumu par aizkavi.
Tādēļ tīkla operācijas jāveic fonā, piemēram, izmantojot AsyncTask, Thread, Coroutine vai Retrofit līdzīgas bibliotēkas ar asinhronās darbības atbalstu.
Piemērs ar Kotlin Coroutine:
GlobalScope.launch(Dispatchers.Main) {
val result = withContext(Dispatchers.IO) {
// tīkla pieprasījums
}
// UI atjaunināšana ar rezultātu
}