Sobes.tech
Junior — Middle

Πώς διασφαλίζετε ότι οι λειτουργίες εκτελούνται με τρόπο που δεν μπλοκάρουν το περιβάλλον χρήστη;

sobes.tech AI

Απάντηση από AI

Για να μην μπλοκάρουν οι λειτουργίες το περιβάλλον χρήστη στο Android, πρέπει να τις εκτελείτε σε ένα φόντο, όχι στο κύριο (UI) νήμα. Για αυτό, μπορείτε να χρησιμοποιήσετε:

  • AsyncTask (παρωχημένο, αλλά συχνά συναντάται σε παλιό κώδικα)
  • HandlerThread ή Handler
  • ExecutorService
  • Kotlin Coroutines (σύγχρονος και συστηνόμενος τρόπος)
  • RxJava

Για παράδειγμα, με τις coroutines, μπορείτε να το κάνετε έτσι:

GlobalScope.launch(Dispatchers.Main) {
    val result = withContext(Dispatchers.IO) {
        // Μακράς διάρκειας λειτουργία, π.χ. αίτημα δικτύου
        fetchData()
    }
    // Ενημέρωση UI με το αποτέλεσμα
    textView.text = result
}

Έτσι, η βαριά εργασία εκτελείται σε ένα φόντο (IO), και η ενημέρωση του περιβάλλοντος γίνεται στο κύριο νήμα.