Bonjour à tous,

voilà je développe une application qui exécute les tâches suivantes:
- Lancement de l'Activity (UI Thread)
- Lancement du thread Network
- Récupération de l'affichage souhaité à l'écran dans le thread Network (appel à un serveur)
- Transfert de l'interface reçue dans le thread Network vers l' UI Thread
- Création et affichage de différents éléments.

Je bloque sur l'avant dernière étape, quand il faut transférer l'interface d'un thread à un autre. Je me suis renseigné au sujet des Handler, Looper et autres joyeusetés, et j'ai compris le principe. Cependant, les exemples que j'ai trouvé déclarent le second thread à l'intérieure de l'activity, ce nouveau thread connait donc le handler qui a été déclaré dans l'Activity.

Mon problème est que j'ai créé ma propre classe de Thread (nommée TNetwork) pour plus de lisibilité (j'aime pas quand tout se mélange dans le code). Je l'instancie dans mon Activity de cette manière:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
public void onCreate(Bundle savedInstanceState) {
 
        super.onCreate(savedInstanceState);
        Looper.prepare();
        Looper.loop();
        mHandler=new MyHandler();
        setContentView(R.layout.main);
 
        if(initDeviceInformations()){          
            threadNetwork=new TNetwork("Network");
            threadNetwork.start();
        }else
        	Log.e("NHDS","Device Initialisation failed");
}
Le reste du boulot est fait dans ma classe TNetwork (traitement des trames).
A partir de là, j'ai créé mon Handler dans mon Activity, afin de récupérer l'interface transmise par le Network Thread:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
public MyHandler mHandler;
//.....
class MyHandler extends Handler{
    	@Override
    	public void handleMessage(Message msg){
    		// Traitement
    	}
    };
Mais quand je veux l'associer dans ma classe TNetwork, impossible, car je n'ai pas de référence vers ce Handler... A savoir que j'aurai probablement plusieurs Handlers de ce genre par la suite allant de Network->UI, et qu'il est difficilement envisageable de les passer tous dans le constructeur du thread Network (ça serait vraiment sale...)

Y'a-t-il une autre méthode pour récupérer cette fameuse référence?

Merci d'avance.
Raz-X