Sobes.tech
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 განახლება შედეგით
}