Sobes.tech
Junior — Middle

Ako zabezpečiť, aby operácie prebiehali tak, aby nezablokovali používateľské rozhranie?

sobes.tech AI

Odpoveď od AI

Aby operácie neblokovali používateľské rozhranie na Androide, je potrebné ich vykonávať v pozadí, nie v hlavnom (UI) vlákne. Na to môžete použiť:

  • AsyncTask (zastaralé, ale stále sa vyskytuje v starom kóde)
  • HandlerThread alebo Handler
  • ExecutorService
  • Kotlin Coroutines (moderný a odporúčaný spôsob)
  • RxJava

Napríklad pomocou korutín môžete urobiť takto:

GlobalScope.launch(Dispatchers.Main) {
    val result = withContext(Dispatchers.IO) {
        // Dlhá operácia, napríklad sieťová požiadavka
        fetchData()
    }
    // Aktualizácia UI s výsledkom
    textView.text = result
}

Týmto spôsobom sa ťažká práca vykonáva v pozadí (IO), a aktualizácia rozhrania v hlavnom vlákne.