Cum mesajele din cadrul protocolului nostru vor veni pe firul de executie al thread-ului care asculta constant mesaje de la server, vom avea nevoie sa folosim un mecanism prin care sa putem modifica interfata la aparitia acestor mesaje.

Daca incercam sa realizam acest lucru pur si simplu ( de exemplu pasand thread-ului referinta catre un element de UI si apoi folosind-o) , aplicatia va genera exceptie.

Varianta cea mai simpla este urmatoarea.

1. In cadrul clasei de activitate curenta se instantia o clasa anonima Handler si se suprascrie metoda handleMessage

public class win1 extends Activity {
 
 private Handler handler = new Handler() {
 
 @Override
 public void handleMessage(Message msg){
 EditText et = (EditText) findViewById(R.id.editText1);
 // putem folosi referinta pentru a modifica UI-ul fara probleme
 }
 
 };
}

2. In cadrul firului de executie pasam o referinta la acest obiect Handler.

 public class MyThread implements Runnable{
 private Handler handler;

3. Cand dorim sa modificam interfata vizuala, folosim handler.sendMessage(msg);

Message msg = new Message();
Bundle bundle = new Bundle();

bundle se comporta ca un hashmap: bundle.putString("cheie","valoare");
putem adauga chiar si tipuri custom , cu conditia sa implementeze Serializable : bundle.putSerializable("cheie",obiect_serializabil)

msg.setData(bundle);

4. In metoda handleMessage din clasa definita de noi mai sus putem stabili ce anume sa modificam la nivel de UI in functie de mesaj.