Junior — Middle
რა მოხდება თუ პროგრამის მთავარი ნაკადში ქსელური მოთხოვნა შეასრულეთ?
sobes.tech AI
პასუხი AI-სგან
თუ Android აპლიკაციის ძირითად (UI) ნაკადში ქსელის მოთხოვნის განხორციელება, ეს გამოიწვევს ინტერფეისის დაბლოკვას მოთხოვნის დასრულებამდე. შედეგად, აპლიკაცია შეჩერდება რეაგირებაზე მომხმარებლის მოქმედებებზე, რაც შეიძლება გამოიწვიოს ANR (Application Not Responding) – სისტემური გაფრთხილება გაყინვის შესახებ.
ამიტომ, ქსელის ოპერაციები უნდა შესრულდეს ფონის ნაკადში, მაგალითად, AsyncTask, Thread, Coroutine ან Retrofit-ის მსგავს ბიბლიოთეკებს გამოყენებით, რომლებიც მხარს უჭერენ ასინქრონულობას.
Kotlin Coroutine-ის მაგალითი:
GlobalScope.launch(Dispatchers.Main) {
val result = withContext(Dispatchers.IO) {
// ქსელის მოთხოვნა
}
// UI განახლება შედეგით
}