Sobes.tech
Junior — Middle

Կարող է գլխավոր հոսքը կատարել ցանցային հարցումներ առանց բլոկավորումների կամ կատարողականության խնդիրների?

sobes.tech AI

Պատասխան AI-ից

Android-ում հիմնական (UI) թելին չպետք է ուղղակիորեն կատարել ցանցային հարցումներ, քանի որ դա հանգեցնում է ինտերֆեյսի բլոկավորման և հավելվածի կատարողականության վատթարացման: Ցանցային գործողությունները կարող են տևել զգալի ժամանակ, և եթե դրանք կատարվեն հիմնական թելում, հավելվածը դադարեցնելու է պատասխանել օգտվողի գործողություններին:

Անխափանության կանխարգելման համար օգտագործվում են՝

  • Ասինխրոն աշխատանքներ (AsyncTask, թեև այժմ հնացած)
  • Թելեր (Thread, HandlerThread)
  • Ասինխրոնության աջակցությամբ գրադարաններ (օրինակ, Retrofit-ով Coroutines)
  • Kotlin Coroutines կամ RxJava

Օրինակ Kotlin Coroutines-ով՝

GlobalScope.launch(Dispatchers.Main) {
    val result = withContext(Dispatchers.IO) {
        // Ցանցային հարցում ֆոնային թելում
        fetchDataFromNetwork()
    }
    // UI-ն թարմացնել արդյունքով
    updateUI(result)
}

Այսպիսով, հիմնական թելն չի բլոկավորվում, և հավելվածը մնում է արձագանքող։