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 progressDialog plutôt statique


Sujet :

Android

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre émérite
    Avatar de ChPr
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    2 122
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 79
    Localisation : France, Val d'Oise (Île de France)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 2 122
    Par défaut Un progressDialog plutôt statique
    Bonjour à toutes et à tous,
    Dans une application, lors du chargement de fichiers FCH.initPgm();, pour faire patienter l'utilisateur, j'ouvre une fenêtre ProgressDialog comme suit :
    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
     
    		final ProgressDialog progress = new ProgressDialog(this);
    		progress.setTitle("Initialisation");
    		progress.setMessage("Ça vient, poussez-pas !");
    		progress.show();
    		new Thread(new Runnable() {
    			public void run()	{
    /*				for (int i = 0; i <10000; i++)
    					for (int j = 0; j <10000; j++)
    				{
    						int k = i+j;
    				}*/
    				FCH.initPgm(); // Tâche qui prend du temps
    				runOnUiThread(new Runnable() {
    					@Override
    					public void run() {
    						progress.dismiss();
    						deb = false;
    						monImg.invalidate();
    					}
    				});
    			}
    		}).start();
    La fenêtre s'ouvre puis se ferme à la fin de l’initialisation, mais le petit cercle de progression ne bouge pas.

    Si je remplace ma procédure d'initialisation FCH.initPgm(); par les deux boucles "for" pour perdre du temps, là le petit cercle tourne correctement.

    Une idée du pourquoi du comment ?

    Merci de votre aide.

    Pierre

  2. #2
    Modérateur
    Avatar de MasterMbg
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2011
    Messages
    719
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Congo-Kinshasa

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2011
    Messages : 719
    Par défaut
    Essaie de lancer le traitement (le thread) avant d'afficher la progressbar
    Plus tu apprends sérieusement, plus tu te rapproches d'un savoir noble. Une chose est certaine, les difficultés ne s'écarteront de ton chemin...

    Tu es nouveau dans le développement Android, la page des COURS est là pour te faciliter la vie
    Tu peux trouver la réponse à ta question dans la FAQ
    Retrouvez mon tutoriel sur la consommation des services web SOAP
    Pense à voter positivement en appuyant sur en bas à droite de la réponse qui t'a donné une piste de solution.

  3. #3
    Membre émérite
    Avatar de ChPr
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    2 122
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 79
    Localisation : France, Val d'Oise (Île de France)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 2 122
    Par défaut
    Citation Envoyé par MasterMbg Voir le message
    Essaie de lancer le traitement (le thread) avant d'afficher la progressbar
    Ça ne change rien.

    Ce que j'ai pu observer est que ce qui semble bloquer la rotation du cercle est le chargement de fichiers dans ma procédure d'initialisation. Si je supprime ces chergements, le cercle tourne.

    Cordialement.

    Pierre

  4. #4
    Expert confirmé

    Avatar de Feanorin
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    4 589
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 4 589
    Par défaut
    Ajoute ceci !

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    progress.setIndeterminate(true);
    Par défault le indeterminate est faux

    Sinon construit ta progressDialog comme ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ProgressDialog progress = ProgressDialog.show(context, titre, message, true);
    Et pas besoin d'appeler la méthode show

  5. #5
    Membre émérite
    Avatar de ChPr
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    2 122
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 79
    Localisation : France, Val d'Oise (Île de France)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 2 122
    Par défaut
    Merci "Feanorin" pour ces propositions que j'ai mises en œuvre. Malheureusement, ça ne fait rien de mieux.

    En analysant toutes les tâches que je fais pendant l'initialisation, il y en une qui semble être la responsable du blocage : c'est le listing de fichiers :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    	public static String[] fchAvecExt(File dirF, final String ext) {
    		FilenameFilter fltExt = new FilenameFilter() {
    			public boolean accept(File dir, String name) {
    				return name.endsWith(ext);
    			}
    		};		
    		String[] lst = dirF.list(fltExt); // Liste des fichiers dans ce répertoire ayant l'extension "ext"
    		return lst;
    	}
    Pendant toutes les autres tâches, le petit cercle tourne.

    Cordialement.

    Pierre

  6. #6
    Expert confirmé

    Avatar de Feanorin
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    4 589
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 4 589
    Par défaut
    Est ce que tu as une erreur ou autres ?

    Essayes de mettre des logs depuis ton code pour avoir une trace ensuite poste nous ton logcat et ton code.

Discussions similaires

  1. [GCC] Réduire la taille d'un programme statique
    Par Geronimo dans le forum Autres éditeurs
    Réponses: 3
    Dernier message: 05/03/2004, 16h34
  2. Impression d'éléments Statiques avec QuickReport
    Par arnaud_verlaine dans le forum C++Builder
    Réponses: 9
    Dernier message: 02/12/2003, 18h49
  3. Analyseurs statiques gratuits ?
    Par patapetz dans le forum Choisir un environnement de développement
    Réponses: 3
    Dernier message: 03/08/2003, 17h56
  4. [Singleton] Différences avec méthodes statiques
    Par Franche dans le forum Design Patterns
    Réponses: 1
    Dernier message: 26/02/2003, 17h10
  5. ActiveX : linker en statique ?
    Par tut dans le forum MFC
    Réponses: 8
    Dernier message: 07/11/2002, 10h24

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