TsCyrille Posté(e) 30 juin 2010 Share Posté(e) 30 juin 2010 Bonjour Je suis en train de récupérer des informations sur Internet : pendant ce traitement je veux afficher un fenêtre indiquant qu'il y a un traitement en cours (du type ProcessDialog) et je veux bloquer pendant ce temps là la thread principale. J'ai fait ce type de classe : public class Internet { //... public String Execute() { final ProgressDialog prd = ProgressDialog.show(ctx, "...", "...", true, false); Traitement(); prd.dismiss(); return "OK"; } //.... Le ProgressDialog ne s'affiche pas. Si j'enlève la ligne concerne le traitement et l'appel à la fonction "dismiss", le ProgressDialog va s'afficher dans ce cas là. Pourquoi ? Autre test : j'ai utilisé une thread que je démarre dans ma fonction "Execute": dans ce cas là, j'arrive à faire tourner le traitement avec le ProgressDialog mais par contre je sors de ma fonction "Execute" avant la fin de la thread (en fait la fonction Execute doit retourner une valeur déterminée dans le traitement de récupération => il me faut donc attendre la fin du traitement avant de retourner la valeur) Quelqu'un aurait-il une idée sur le sujet ? Merci d'avance Lien vers le commentaire Partager sur d’autres sites More sharing options...
Alocaly Posté(e) 30 juin 2010 Share Posté(e) 30 juin 2010 Utilise la class AsyncTask, c'est fait pour ca : Ca te lance un thread ou tu fais le traitement que tu veux, et tu as une fonction sur le thread UI au départ ( donc pour lancer ta progress Dialog), une fonction sur le thread UI à la fin( pour le dimiss ) qui utilise la valeur retournée par le traitement , et tu peux meme indiquer la progression... c'est quasi magique... Emmanuel / Alocaly Lien vers le commentaire Partager sur d’autres sites More sharing options...
TsCyrille Posté(e) 8 juillet 2010 Auteur Share Posté(e) 8 juillet 2010 Salut J'ai mis en place la class AsyncTask : en effet elle marche très bien... Mais il me reste un petit souci (je vais essayer d'être le plus clair possible) : j'utilise ce principe dans une classe A (qui ne dérive de rien) de cette manière : public fct () { Appel de mon AsyncTask } Dans une classe B (qui dérive d'une Activity) j'appelle la fonction fct de la classe A de cette manière : public Appel() { fct(); ... // Suite de mon code } Dans la suite de mon code de la fonction Appel je veux utiliser le résultat que j'obtiens à la fin de l'AsyncTask . Or je passe dans la suite de mon code avant que l'AsyncTask finisse... Comment faire ? Merci d'avance Lien vers le commentaire Partager sur d’autres sites More sharing options...
TsCyrille Posté(e) 12 juillet 2010 Auteur Share Posté(e) 12 juillet 2010 Bonjour J'y suis enfin arriver en utilisant un mécanisme de Listener... Merci à vous tous pour votre aide... Lien vers le commentaire Partager sur d’autres sites More sharing options...
Recommended Posts
Archivé
Ce sujet est désormais archivé et ne peut plus recevoir de nouvelles réponses.