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 :

Boite de progression pendant l'exécution d'un thread


Sujet :

Android

  1. #1
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Octobre 2007
    Messages
    190
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Octobre 2007
    Messages : 190
    Par défaut Boite de progression pendant l'exécution d'un thread
    Bonjour,

    Actuellement, je télécharges des données sur un serveur (des images), ceci au sein d'un thread. J'aimerais afficher, pendant l'execution du thread une barre de chargement. Ceoendant, je n'arrives pas à synchroniser mon thread avec ma barre de chargement...

    De fait, lordque je lance mon thread (sans effectuer de join() dans mon programme principal), la boite de chargemlent s'affiche mais se cache tout de suite car l'execution continue... par contre, si j'effectue un join(à pour "attendre" la fin du traitement du thread, l'appel est bloquant, donc ma barre de progrerssion ne s'affiche pas...

    Sauriez vous me donner un coup de main là dessu ?

    Voici le code correspondant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    dialog.show();
    th.start();
    			try {
    				th.join();
    				Log.i("", ""+th.isAlive());
    			} catch (InterruptedException e) {
    				// TODO Auto-generated catch block
    				e.printStackTrace();
    			}
    dialog.dismiss();
    Merci d'avance !

  2. #2
    yan
    yan est déconnecté
    Rédacteur
    Avatar de yan
    Homme Profil pro
    Ingénieur expert
    Inscrit en
    Mars 2004
    Messages
    10 035
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    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 035
    Par défaut
    Salut.
    Tu devrais peut être regarder asynchtask.
    Join est bloquant et bloque donc ton thread. Comme c'est le thread est le principale, il bloque ton appli => ARN au bout de 5s

  3. #3
    Rédacteur
    Avatar de MrDuChnok
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2002
    Messages
    2 112
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Juin 2002
    Messages : 2 112
    Par défaut
    Salut,

    Voici un code qui pourrait te convenir :

    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
    39
    40
     
    public class MaClass extends Activity implements Runnable {
     
    	private ProgressDialog pd;
     
    	//...
     
     
    	public void launchWait() {
    		pd = ProgressDialog.show(this, "Téléchargement...", "Récupération images", true,false);
     
    		Thread thread = new Thread(this);
    		thread.start();
    	}
     
    	public void run() {
     
                    //Ici tu met ton code pour télécharger l'image
                    //...
                    //...
     
                    //Une fois l'image téléchargée, tu préviens la boite de dialogue 
                    //qu'elle peut se fermer :
    		handler.sendEmptyMessage(0);
    	}
     
    	private Handler handler = new Handler() {
     
    		@Override
    		public void handleMessage(Message msg) {
                            //Le handler a reçu une notification
                            //On ferme la boite de dialogue
                            //Les bonne pratique voudraient qu'on teste le msg et
                            //savoir si c'est bien pour arreter la boite de dialogue, ici  
                            //on maitrise l'environnement, donc osef ^^
     
    			pd.dismiss();
    		}
    	};
    }

  4. #4
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Octobre 2007
    Messages
    190
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Octobre 2007
    Messages : 190
    Par défaut
    Meri je teste et je vous tiens au courant !

  5. #5
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Octobre 2007
    Messages
    190
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Octobre 2007
    Messages : 190
    Par défaut
    OK MrDuChnok, ca marche niquel ce qui me manquait c'était simpelment la méthode qui permet de notifier que le thread est terminé !

    Merci !

  6. #6
    yan
    yan est déconnecté
    Rédacteur
    Avatar de yan
    Homme Profil pro
    Ingénieur expert
    Inscrit en
    Mars 2004
    Messages
    10 035
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    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 035
    Par défaut
    voici une version avec asyncTask

    Code java : 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
    public class test extends Activity {
        //...
     
        public void launchAction() {
     
            final ProgressDialog progressDialog = ProgressDialog.show(this, "Hello", "word", true,false);
            //Définition de la tâche
            AsyncTask<Void, Void, Void> task = new AsyncTask<Void, Void, Void>() {
                    @Override
                    protected Void doInBackground(Void... params) {
     
                        //action exécuté dans le thread
                        //...
                        return null;
                    }
     
                    @Override
                    protected void onPostExecute(Void result) {
                        //Fonction appelé à la fin du traitement traitement
                        progressDialog.dismiss();
                    }
     
            };
            //Lance le thread
            task.execute((Void[])null);
     
        }
    }

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

Discussions similaires

  1. Boite de progression "Patientez" pendant une localisation GPS
    Par jeanjean6 dans le forum API standards et tierces
    Réponses: 3
    Dernier message: 24/08/2011, 14h15
  2. [QThread] signal s'arrêtant d'émettre pendant l'exécution d'un thread
    Par eric_vi dans le forum Multithreading
    Réponses: 1
    Dernier message: 16/04/2010, 09h38
  3. Empêcher la copie d'un prog pendant son exécution
    Par JuanLopez1966 dans le forum Assembleur
    Réponses: 3
    Dernier message: 09/09/2004, 19h49
  4. Créer une fonction mathématique pendant l'exécution
    Par zeprogrameur dans le forum Langage
    Réponses: 5
    Dernier message: 09/07/2004, 11h36
  5. Published property d'un compo conservées pendant l'exécution
    Par bobby-b dans le forum Composants VCL
    Réponses: 2
    Dernier message: 04/09/2003, 10h15

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