Sobes.tech
Junior — Middle

Kuidas tagada, et operatsioonid toimuvad nii, et need ei blokeeri kasutajaliidest?

sobes.tech AI

Vastus AI-lt

Et vältimaks, et operatsioonid blokeerivad kasutajaliidest Androidis, tuleb neid teha taustal, mitte peamisel (UI) lõngal. Selleks saab kasutada:

  • AsyncTask (vana, kuid endiselt levinud vanas koodis)
  • HandlerThread või Handler
  • ExecutorService
  • Kotlin Coroutines ( kaasaegne ja soovitatav meetod)
  • RxJava

Näiteks, korutinite abil saab teha järgmiselt:

GlobalScope.launch(Dispatchers.Main) {
    val result = withContext(Dispatchers.IO) {
        // Pikk operatsioon, näiteks võrgupäring
        fetchData()
    }
    // UI uuendamine tulemusega
    textView.text = result
}

Nii toimub raske töö taustal (IO), ning kasutajaliidese uuendamine toimub peamisel lõngal.