Bonjour à tous,

j'ai une application qui fait un usage intensif des sockets. Par peur de consommation de data "cachée" pour l'utilisateur j'ai toujours procédé comme ceci :

Oncreate : Creation d'un thread et ouverture de la socket
Onpause : Fermeture de la socket et destruction du thread.

Ce process marche très bien , sauf que du coup à chaque nouvelle activity je dois récréer un thread et réouvrir la socket. Perte de temps et de ressource évidente.

Je me suis donc documenté et il semblerait que l'idéal est l'utilisation d'un service.

Actuellement mon Thread ressemble à ceci (épuré)

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
public class myThread extends HandlerThread implements Callback,NetworkMessages 
{
 
	public myThread(Handler uiHandler, DP dp, boolean auth)
	{
		super(myThread.class.getSimpleName(), Process.THREAD_PRIORITY_DISPLAY);
		this.start();
	}
 
	/**
         * Initialise la connexion réseau
         */
	private void initConnection()
	{
		if(this.initSocket())
		{
			//blabla
		}	
	}
 
 
	/**
         * Initialise une socket
         * @return Etat de la socket
         */
	private boolean initSocket()
	{
		//creation socket
	}
 
 
	@Override
	protected void onLooperPrepared()
	{
		super.onLooperPrepared();
		synchronized (this) {
			this.handler = new Handler(getLooper(),this);
			notifyAll();
			this.initConnection();
		}
	}
 
	@Override
	public boolean quit()
	{
		if(this.handler != null)
		{
			this.handler.removeMessages(ALIVE);
			this.handler = null;
		}
		return super.quit();
	}
 
	@Override
	public boolean handleMessage(Message msg) {
		if(!this.isAlive()) {
			return false;
		}
 
		Message message = null;
		Bundle bundle	= null;
 
		switch (msg.what)
		{
			//Gestion des différents message
		}	
		return false;
	}
}
Il dérive de HandlerThread et je peux donc communiquer très simplement avec lui en lui envoyant des messages.

Puis je simplement créer un service qui va venir instancier ce thread et toujours l'utiliser (le thread) comme je le fait actuellement ?
Si oui comment depuis le service puis je retourner une instance du thread instancié ?