Aller au contenu

[Résolu] Utilisation d'une fenêtre indiquant un traitement


TsCyrille

Recommended Posts

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

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

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

Archivé

Ce sujet est désormais archivé et ne peut plus recevoir de nouvelles réponses.

×
×
  • Créer...