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 :

Erreur TimerTask


Sujet :

Android

  1. #1
    Membre régulier
    Homme Profil pro
    Etudiant du Genie Logiciel
    Inscrit en
    Juillet 2011
    Messages
    397
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Etudiant du Genie Logiciel
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2011
    Messages : 397
    Points : 73
    Points
    73
    Par défaut Erreur TimerTask
    SALUT A TOUS. je suis en train de vouloir développer un service de géolocalisation avec sauvegarde des données toutes les deux minutes ou quand l'utilisateur change de position . le hic est que éclipse me génère une erreur que je ne comprends . quel peut en être a cause ? voici la partie de ma classe chargée de le tache répétitive :

    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
     
     
     
     
    final Handler handler = new Handler();
     
        TimerTask task = new TimerTask() {
             @SuppressWarnings("unused")
            AlarmManager am = (AlarmManager)getSystemService(ALARM_SERVICE);       
        public void run() {
        handler.post(new Runnable() {
        private long firstTime;
     
        public void run() {
              firstTime = SystemClock.elapsedRealtime();
                  String name = "Service" ;
                    ReceiveData reception = new ReceiveData(name); 
      am.setRepeating(AlarmManager.ELAPSED_REALTIME_WAKEUP,firstTime,  1000 * 60 * 2, proccess);           
     
                 Coordonnees cord = new Coordonnees(reception.getLatitude(), reception.getLongitude(), reception.getAltitude(), reception.getPrecision(), reception.getVitesse(), reception.getDirection(), reception.getDate(), reception.getFournisseur());
                     MetierDao metier = new MetierDao(getApplicationContext());
                        metier.ajouter(cord);
                        Toast.makeText(ReceiveData.this, "Enregistrement Termine !", Toast.LENGTH_SHORT).show();
     
                       }
                });
         }
     
     
        } ;
     
        // demarre le timer maintenant avec une periode de 2 Minutes       
        Timer timer = new Timer() ;
        timer.schedule(task, 0, period);// C'EST CETTE LIGNE QUE ÉCLIPSE SOULIGNE EN ROUGE

  2. #2
    Membre éprouvé
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    757
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 757
    Points : 968
    Points
    968
    Par défaut
    Si il y a une ligne soulignée en rouge, c'est qu'il y a une erreur. Si tu laisses ta souris sur cette ligne, eclipse t'expliquera l'erreur.

  3. #3
    Membre régulier
    Homme Profil pro
    Etudiant du Genie Logiciel
    Inscrit en
    Juillet 2011
    Messages
    397
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Etudiant du Genie Logiciel
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2011
    Messages : 397
    Points : 73
    Points
    73
    Par défaut Erreur de Syntax
    salut a tous. ou se situe l'erreur de syntax dans 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
     
    TimerTask task = new TimerTask() {
     
    		AlarmManager am = (AlarmManager)getSystemService(ALARM_SERVICE);		
    	public void run() {
    	handler.post(new Runnable() {
    	private long firstTime;
     
    	public void run() {
    		  firstTime = SystemClock.elapsedRealtime();
    		      String name = "Service" ;
    		        ReceiveData reception = new ReceiveData(name); 	
     am.setRepeating(AlarmManager.ELAPSED_REALTIME_WAKEUP,firstTime,  1000 * 60 * 2, proccess);            
     
    		     Coordonnees cord = new Coordonnees(reception.getLatitude(), reception.getLongitude(), reception.getAltitude(), reception.getPrecision(), reception.getVitesse(), reception.getDirection(), reception.getDate(), reception.getFournisseur());
    		         MetierDao metier = new MetierDao(getApplicationContext());
    		            metier.ajouter(cord);
    		            Toast.makeText(ReceiveData.this, "Enregistrement Termine !", Toast.LENGTH_SHORT).show();
     
    	               }
    	        });
    	 }
     
     
    	} ;
     
    	Timer timer = new Timer(true);
    	timer.schedule(task,period,period) ; //eclipse me souligne cette en rouge. personnellemnt , je ne vois pas d'erreur de syntax

  4. #4
    Membre régulier
    Homme Profil pro
    Etudiant du Genie Logiciel
    Inscrit en
    Juillet 2011
    Messages
    397
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Etudiant du Genie Logiciel
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2011
    Messages : 397
    Points : 73
    Points
    73
    Par défaut
    Citation Envoyé par bza88 Voir le message
    salut a tous. ou se situe l'erreur de syntax dans 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
     
    TimerTask task = new TimerTask() {
     
    		AlarmManager am = (AlarmManager)getSystemService(ALARM_SERVICE);		
    	public void run() {
    	handler.post(new Runnable() {
    	private long firstTime;
     
    	public void run() {
    		  firstTime = SystemClock.elapsedRealtime();
    		      String name = "Service" ;
    		        ReceiveData reception = new ReceiveData(name); 	
     am.setRepeating(AlarmManager.ELAPSED_REALTIME_WAKEUP,firstTime,  1000 * 60 * 2, proccess);            
     
    		     Coordonnees cord = new Coordonnees(reception.getLatitude(), reception.getLongitude(), reception.getAltitude(), reception.getPrecision(), reception.getVitesse(), reception.getDirection(), reception.getDate(), reception.getFournisseur());
    		         MetierDao metier = new MetierDao(getApplicationContext());
    		            metier.ajouter(cord);
    		            Toast.makeText(ReceiveData.this, "Enregistrement Termine !", Toast.LENGTH_SHORT).show();
     
    	               }
    	        });
    	 }
     
     
    	} ;
     
    	Timer timer = new Timer(true);
    	timer.schedule(task,period,period) ; //eclipse me souligne cette en rouge. personnellemnt , je ne vois pas d'erreur de syntax

  5. #5
    Membre éprouvé
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    757
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 757
    Points : 968
    Points
    968
    Par défaut
    Avant que quelqu'un puisse t'aider, il faut lui donner les bonnes informations.
    Nous ne sommes pas des devins.

    Par exemple, la variable period n'est définie nulle part, donc c'est impossible de te répondre...

    De plus, je réitère : dis nous ce qu'il y a écrit lorsque tu survole cette ligne rouge avec ta souris.

  6. #6
    Membre régulier
    Homme Profil pro
    Etudiant du Genie Logiciel
    Inscrit en
    Juillet 2011
    Messages
    397
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Etudiant du Genie Logiciel
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2011
    Messages : 397
    Points : 73
    Points
    73
    Par défaut
    Voici le message que éclipse me renvoi et mon le paramètre Period est de type Long


    Multiple markers at this line
    - Syntax error on token "(", delete this token
    - Syntax error on token ")", delete this token
    - Syntax error on token "0", invalid
    VariableDeclarator
    - Syntax error on token "1000", invalid
    VariableDeclarator

  7. #7
    Membre éprouvé
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    757
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 757
    Points : 968
    Points
    968
    Par défaut
    Où se situe cette partie du code ? Dans le onCreate ? Au milieu de nulle part ?

  8. #8
    Expert éminent

    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Février 2007
    Messages
    4 253
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2007
    Messages : 4 253
    Points : 7 618
    Points
    7 618
    Billets dans le blog
    3
    Par défaut
    Avec une meilleure indentation...
    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
     
            TimerTask task = new TimerTask() {
     
                AlarmManager am = (AlarmManager) getSystemService(ALARM_SERVICE);
     
                public void run() {
                    handler.post(new Runnable() {
                        private long firstTime;
     
                        public void run() {
                            firstTime = SystemClock.elapsedRealtime();
                            String name = "Service";
                            ReceiveData reception = new ReceiveData(name);
                            am.setRepeating(AlarmManager.ELAPSED_REALTIME_WAKEUP, firstTime, 1000 * 60 * 2, proccess);
     
                            Coordonnees cord = new Coordonnees(reception.getLatitude(), reception.getLongitude(), reception.getAltitude(),
                                    reception.getPrecision(), reception.getVitesse(), reception.getDirection(), reception.getDate(), reception.getFournisseur());
                            MetierDao metier = new MetierDao(getApplicationContext());
                            metier.ajouter(cord);
                            Toast.makeText(ReceiveData.this, "Enregistrement Termine !", Toast.LENGTH_SHORT).show();
     
                        }
                    });
                }
     
            };
     
            Timer timer = new Timer(true);
            timer.schedule(task, period, period);
    N'oubliez pas de cliquer sur mais aussi sur si un commentaire vous a été utile !
    Et surtout

  9. #9
    Expert éminent

    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Février 2007
    Messages
    4 253
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2007
    Messages : 4 253
    Points : 7 618
    Points
    7 618
    Billets dans le blog
    3
    Par défaut
    D'ailleurs je ne comprends pas le truc....

    Un Timer qui va juste poster un runnable dans un handler ?

    Pourquoi ne pas utiliser simplement le postDelayed du handler ?


    Et sinon "period" (avec une minuscule) doit être de type "long" (avec une minuscule aussi) pour éviter d'éventuels problèmes d'unboxing.

    Serait-il possible d'avoir tout le fichier copié ici ? ainsi que la liste des erreurs (fenêtre "markers" de eclipse).

    Et tous les "period" on va dire à l'AlarmManager de réveiller le device toutes les 2 minutes pour effectuer "proccess" (un 'c' de trop ?). Durée de vie de la batterie: 2h à tout casser (et température du device proche des 60°C ^^)
    N'oubliez pas de cliquer sur mais aussi sur si un commentaire vous a été utile !
    Et surtout

Discussions similaires

  1. Erreur fréquente avec ASP et IIS
    Par Community Management dans le forum ASP
    Réponses: 2
    Dernier message: 11/02/2004, 22h20
  2. Check Url pour savoir si erreur 404 ou si le site existe
    Par Clément[Delphi] dans le forum Composants VCL
    Réponses: 2
    Dernier message: 07/08/2002, 13h49
  3. Réponses: 2
    Dernier message: 27/05/2002, 19h46
  4. erreur IDL:omg.org/CORBA/MARSHAL:1.0
    Par Pinggui dans le forum CORBA
    Réponses: 3
    Dernier message: 13/05/2002, 15h05
  5. [Kylix] Erreur objet
    Par Anonymous dans le forum EDI
    Réponses: 1
    Dernier message: 22/03/2002, 09h41

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