Diskuze: Android aplikace - Async a UI
V předchozím kvízu, Online test znalostí Java, jsme si ověřili nabyté zkušenosti z kurzu.
Zobrazeno 3 zpráv z 3.
V předchozím kvízu, Online test znalostí Java, jsme si ověřili nabyté zkušenosti z kurzu.
Ahoj, v Androidu nemůžeš šahat na view komponenty z jiného vlákna, než hlavního aplikačního. Pokud chceš změnit text například v TextView z jiného vlákna, je potřeba to spustit na hlavním UI vlákně. K tomu slouží metoda runOnUiThread přímo v aktivitě, viz dokumentace).
Pokud máš ten listener přímo někde v aktivitě, lze poté napsat:
public void onMessageRecieved(String message) {
runOnUiThread(() -> {
infoip.setText(message);
});
Log.d("DBG",message);
}
Pokud je kód umístěn mimo aktivitu, lze to zapsat tímto způsobem:
public void onMessageRecieved(String message) {
Handler handler = new Handler(Looper.getMainLooper());
handler.post(() -> {
infoip.setText(message);
});
Log.d("DBG",message);
}
Díky, vůbec mi nedošlo, že i když je ta funkce v aktivitě, tak je vlastně volaná z jiného vlákna.
Zobrazeno 3 zpráv z 3.