Junior — Middle
Какво ще се случи, ако изпълните мрежова заявка в основния поток на програмата?
sobes.tech AI
Отговор от AI
Ако извършите мрежова заявка в основния (UI) поток на Android приложение, това ще доведе до блокиране на интерфейса на потребителя до завършването на заявката. В резултат, приложението ще спре да реагира на действията на потребителя, което може да предизвика ANR (Application Not Responding) – системно предупреждение за замръзване.
Затова мрежовите операции трябва да се изпълняват във фонов поток, например, използвайки AsyncTask, Thread, Coroutine или библиотеки като Retrofit с поддръжка за асинхронност.
Пример с Kotlin Coroutine:
GlobalScope.launch(Dispatchers.Main) {
val result = withContext(Dispatchers.IO) {
// мрежова заявка
}
// актуализация на UI с резултата
}