IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Android Discussion :

Un seul service


Sujet :

Android

  1. #1
    Membre confirmé Avatar de Willy55
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2012
    Messages
    188
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2012
    Messages : 188
    Par défaut Un seul service
    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 ?

  2. #2
    Modérateur
    Avatar de Hizin
    Homme Profil pro
    Développeur mobile
    Inscrit en
    Février 2010
    Messages
    2 180
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France

    Informations professionnelles :
    Activité : Développeur mobile

    Informations forums :
    Inscription : Février 2010
    Messages : 2 180
    Par défaut
    Vérifie bien le nombre de fois qu'il passe dans le onCreate.
    Pour le peu que j'ai cherché, j'ai vu que les Services étaient des Singletons.

    Ce ne serait pas plutôt la méthode "onStartCommand" qui serait appelée trouzmille fois ?
    Dans ce cas, déplacer le lancement du timer dans le onCreate, ou avoir un flag quelconque pour voir si le timer à déjà été lancé ou non.
    C'est Android, PAS Androïd, ou Androïde didiou !
    Le premier est un OS, le second est la mauvaise orthographe du troisième, un mot français désignant un robot à forme humaine.

    Membre du comité contre la phrase "ça marche PAS" en titre et/ou explication de problème.

    N'oubliez pas de consulter les FAQ Android et les cours et tutoriels Android

  3. #3
    Membre confirmé Avatar de Willy55
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2012
    Messages
    188
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2012
    Messages : 188
    Par défaut
    Bien vu

    Merci

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [WCF RIA Services] Pourquoi IQueryable<T> retourne un seul objet ?
    Par Joffrey Kern dans le forum Silverlight
    Réponses: 6
    Dernier message: 26/07/2011, 16h19
  2. Un seul fichier de service php
    Par TOTOTAR dans le forum Dynamique
    Réponses: 2
    Dernier message: 14/01/2011, 12h00
  3. 1 seule url pour 2 web services
    Par MicroPuce dans le forum Services Web
    Réponses: 3
    Dernier message: 12/04/2010, 08h44
  4. Réponses: 0
    Dernier message: 08/03/2010, 17h51
  5. arrêter un servlet pas l'autre dans un seul web service
    Par renarde dans le forum Servlets/JSP
    Réponses: 2
    Dernier message: 04/10/2009, 08h23

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo