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 :

Action / Message périodique


Sujet :

Android

  1. #1
    Modérateur
    Avatar de grunk
    Homme Profil pro
    Lead dév - Architecte
    Inscrit en
    Août 2003
    Messages
    6 691
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Lead dév - Architecte
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2003
    Messages : 6 691
    Points : 20 230
    Points
    20 230
    Par défaut Action / Message périodique
    Bonjour à tous,

    J'ai actuellement dans mon application plusieurs Thread qui tourne en plus du Thread d'interface. Pour l'un de ces Thread j'aurais besoin de lui envoyer un message periodiquement , toutes les 15 secondes.
    Le thread concerné implémente un looper et un handler afin de gérer les messages qui lui sont envoyés. Il a également accès au Handler du Thread d'UI pour pouvoir retourner des message à l'interface.

    Le Thread :

    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 void run()
    {
            Looper.prepare();
     
            this.threadHandler = initHandler();
            // Message vers l'UI
            this.message        = this.activityHandler.obtainMessage();
            this.message.what   = CONNECTED;
            activityHandler.sendMessage(this.message);
            // Début de la gestion de message thread
            Looper.loop();
     
    }
     
    private Handler initHandler()
    {
        return new Handler() {
     
            public void handleMessage(Message msg)
            {
                switch(msg.what)
                {
                    case AUTH : 
                    {
                        auth();
                        break;
                    }
     
                    case ALIVE :
                    {
                        sendAlive();
                        break;
                    }
                }
            }
        };
    }
    Du coté de l'activité j'ai quelque chose comme celà :
    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
     
    public void onResume()
    {
        super.onResume();
        //Lancement du Thread
        this.thread                 = new MyThread(activityHandler);
        // Récupération de l'handler du thread
        this.threadHandler  = this.thread.gethandler();
     
        threadMessage           = this.threadHandler.obtainMessage();
        threadMessage.what  = AUTH;
        // Envoi d'un message au Thread
        this.threadHandler.sendMessage(threadMessage);
     
        //Appel Periodique
        ....
    }
    Comment puis je simplement soit à l'intérieur du Thread soit depuis l'activité appelé periodiquement le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    threadMessage.what  = ALIVE;
    ?

    Merci pour votre aide

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2011
    Messages
    322
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2011
    Messages : 322
    Points : 494
    Points
    494
    Par défaut
    Bonjour,
    Alors je ne sais pas si c'est la meilleure méthode, mais je créerai un autre thread qui aurait comme action sendMessageDelayed(Message,time), tout ça dans une boucle while évidemment

  3. #3
    Modérateur
    Avatar de grunk
    Homme Profil pro
    Lead dév - Architecte
    Inscrit en
    Août 2003
    Messages
    6 691
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Lead dév - Architecte
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2003
    Messages : 6 691
    Points : 20 230
    Points
    20 230
    Par défaut
    Merci pour ta réponse,
    C'est ce à quoi j'avais penser en premier lieu , mais j'espérais qu'il y'ai peut être plus simple/adapter que de recréer un thread supplémentaire.

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2011
    Messages
    322
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2011
    Messages : 322
    Points : 494
    Points
    494
    Par défaut
    Dans ton handler tu peux aussi appeler directement sendMessageDelayed.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    final Handler myHandler = new Handler() {
    		public void handleMessage(Message msg) {
    			switch(msg.what) {
    			case(BOUCLE):
    				myThread.action();
    				sendEmptyMessageDelayed(BOUCLE, 15000);			
    			break;
    ...

  5. #5
    Modérateur
    Avatar de grunk
    Homme Profil pro
    Lead dév - Architecte
    Inscrit en
    Août 2003
    Messages
    6 691
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Lead dév - Architecte
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2003
    Messages : 6 691
    Points : 20 230
    Points
    20 230
    Par défaut
    C'est une solution intéressante.
    Le sendDelayadMessage n'envoi qu'une fois, il suffirait donc que dans la méthode concerné je reposte le message une fois le traitement terminé pour avoir un résultat qui correspond à ce que je cherche !

  6. #6
    yan
    yan est déconnecté
    Rédacteur
    Avatar de yan
    Homme Profil pro
    Ingénieur expert
    Inscrit en
    Mars 2004
    Messages
    10 033
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur expert
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2004
    Messages : 10 033
    Points : 13 968
    Points
    13 968
    Par défaut
    Il existe AlarmManager qui correspond peut être à ton besoin
    http://developer.android.com/referen...rmManager.html

    Ca dépend de ce que tu veux faire

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

Discussions similaires

  1. [Séquence] action répétée périodiquement
    Par yasinfo dans le forum Autres Diagrammes
    Réponses: 1
    Dernier message: 15/03/2010, 22h35
  2. envoyé un message périodiquement à une machine
    Par lovelace dans le forum Eclipse Platform
    Réponses: 1
    Dernier message: 18/03/2008, 17h10
  3. problème d'exception sur action MESSAGE
    Par lili2704 dans le forum Struts 1
    Réponses: 7
    Dernier message: 09/08/2007, 09h15
  4. Réponses: 2
    Dernier message: 06/04/2007, 15h04
  5. Problème message d'erreur et action sur clic
    Par rangernoir dans le forum Access
    Réponses: 5
    Dernier message: 26/09/2005, 12h10

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