Sobes.tech
Junior — Middle

Πώς μπορεί να οργανωθεί η μετάδοση δεδομένων από μια διαδικασία στο παρασκήνιο στο κύριο νήμα εκτέλεσης;

sobes.tech AI

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

Στο Android, για τη μεταφορά δεδομένων από ένα background thread στο κύριο (UI) thread, χρησιμοποιούνται συνήθως διάφορες προσεγγίσεις:

  • Handler: δημιουργείται στο κύριο thread και λαμβάνει μηνύματα ή Runnable από το background thread.
  • runOnUiThread: μέθοδος της Activity που επιτρέπει την εκτέλεση κώδικα στο UI thread.
  • LiveData: παρατηρήσιμη οντότητα, των ενημερώσεων της οποίας διανέμονται αυτόματα στο UI.
  • ViewModel + Coroutine με Dispatchers.Main: οι coroutine επιτρέπουν την εναλλαγή μεταξύ των threads.

Παράδειγμα με Handler:

Handler mainHandler = new Handler(Looper.getMainLooper());

new Thread(() -> {
    // Εργασία στο background
    String result = "Δεδομένα από το background thread";

    mainHandler.post(() -> {
        // Ενημέρωση UI
        textView.setText(result);
    });
}).start();