Sobes.tech
Junior — Middle

Kaip užtikrinti, kad operacijos būtų vykdomos taip, kad jos neužblokuotų naudotojo sąsajos?

sobes.tech AI

Atsakymas iš AI

Kad Android operacijos neblokuotų naudotojo sąsajos, jas reikia vykdyti foniniame sraute, o ne pagrindiniame (UI) sraute. Tam galima naudoti:

  • AsyncTask (pasenęs, bet dažnai sutinkamas senesniame kode)
  • HandlerThread arba Handler
  • ExecutorService
  • Kotlin Coroutines (šiuolaikinis ir rekomenduojamas būdas)
  • RxJava

Pavyzdžiui, naudojant korutinas, tai galima padaryti taip:

GlobalScope.launch(Dispatchers.Main) {
    val result = withContext(Dispatchers.IO) {
        // Ilgas veiksmas, pvz., tinklo užklausa
        fetchData()
    }
    // UI atnaujinimas su rezultatu
    textView.text = result
}

Taip, sunki veikla vykdoma foniniame sraute (IO), o sąsajos atnaujinimas – pagrindiniame sraute.