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.