Bonjour,

Petite question, mon application doit tourner en tâche de fond, j'ai suivis un tuto sur le local service pour m'entrainer.

Ça fonctionne bien j'ai un timer qui tourne en tache de fond grâce à ce code :

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
public class BackgroundService extends Service { 
 
	private Timer timer ; 
	static int i = 0;
 
	@Override
	public void onCreate() { 
	    super.onCreate(); 
	    timer = new Timer(); 
	} 
 
	@Override 
	public int onStartCommand(Intent intent, int flags, int startId) { 
	    timer.scheduleAtFixedRate(new TimerTask() { 
	        public void run() { 
	            i++;
	        } 
	    }, 0, 1000); 
 
	    return START_NOT_STICKY; 
	} 
 
	@Override 
	public void onDestroy() { 
	    Log.d(this.getClass().getName(), "onDestroy"); 
	    this.timer.cancel(); 
	}
 
	@Override
	public IBinder onBind(Intent arg0) {
		// TODO Auto-generated method stub
		return null;
	}
 
	public static int getI() {
		return i;
	}
}
Dans le tuto il faut lancer un nouvelle intent de cette classe au démarrage pour lancer le processus, donc dans ma première vue j'ai ajouter comme indiqué :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
Intent intent = new Intent(".BackgroundService.ACTION");  
		startService(intent);
Seulement problème lorsque je quitte mon appli et que je la redémarre, cela doit, je pense, créer un nouvelle intent a chaque fois... parce que le timer s'affole il doit s'incrémenter de 1 par seconde, après 10 démarrage il fait bien du 10 en 10...

Comment n'avoir QU'UN service au premier démarrage de l'application et que lorsqu'elle tourne en tache de fond, le service ne se créé pas une 2ème fois ?