Sobes.tech
Junior — Middle

Оқими асосӣ метавонад дархостҳои шабакавиро бидуни бастан ё мушкилоти иҷроиш иҷро кунад?

sobes.tech AI

Ҷавоб аз AI

در اندروید، نخ اصلی (UI) نباید مستقیماً درخواست‌های شبکه‌ای انجام دهد، زیرا این منجر به قفل شدن رابط کاربری و کاهش عملکرد برنامه می‌شود. عملیات‌های شبکه ممکن است زمان قابل توجهی ببرند، و اگر در نخ اصلی انجام شوند، برنامه پاسخگو به اقدامات کاربر نخواهد بود.

برای جلوگیری از قفل شدن، از موارد زیر استفاده می‌شود:

  • وظایف ناهمزمان (AsyncTask، هرچند اکنون منسوخ شده است)
  • نخ‌ها (Thread، HandlerThread)
  • کتابخانه‌هایی با پشتیبانی از ناهمزمانی (مثلاً Retrofit با Coroutines)
  • Kotlin Coroutines یا RxJava

مثال با Kotlin Coroutines:

GlobalScope.launch(Dispatchers.Main) {
    val result = withContext(Dispatchers.IO) {
        // اجرای درخواست شبکه در پس‌زمینه
        fetchDataFromNetwork()
    }
    // به‌روزرسانی UI با نتیجه
    updateUI(result)
}

به این صورت، نخ اصلی قفل نمی‌شود و برنامه پاسخگو باقی می‌ماند.