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 :
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
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; } }
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...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 Intent intent = new Intent(".BackgroundService.ACTION"); startService(intent);
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 ?
Partager