Sia in .NET che in Android e sono sicuro che in altri framework ho notato questo problema in cui si finisce con un'attività che richiede troppo tempo e quindi mantiene il thread dell'interfaccia utente.
Supponiamo che tu abbia un metodo che aggiorna un'etichetta con testo da un percorso di rete / Internet e ritorna dopo 3-4 secondi e imposta l'etichetta in modo appropriato. Questo contiene il thread dell'interfaccia utente. Quindi il tuo primo punto di riferimento è quindi spostare la chiamata al metodo su un thread diverso. Solo che non funziona solo ... perché non puoi più aggiornare il testo dell'etichetta dato che ciò può essere fatto solo nel thread dell'interfaccia utente ....
Quindi la lingua fornisce qualcosa sulla falsariga di
runOnUiThread(() -> {
label.setText(myNewFoundInformationFrom);
});
Questo esempio è di Android che utilizza lambda e rappresenta senza dubbio un enorme miglioramento su ciò che avremmo potuto utilizzare 10 anni fa ...
Forse più in là ti ritrovi a farlo da diversi punti ... quindi potresti creare un metodo
void setLabelText(string newText)
runOnUiThread(() -> {
label.setText(newText);
});
e almeno nel caso di Android ... questo funziona indipendentemente dal thread da cui lo eseguo.
Quindi questo mi fa meraviglia ... Perché Microsoft / Google e tutti fanno in modo che tutti i metodi di aggiornamento / le funzioni per i controlli dell'interfaccia utente siano già sicuri che vengano eseguiti dal thread dell'interfaccia utente in questo modo - in modo che non dobbiamo?