2010-06-10 8 views
8

J'ai regardé l'API Android et d'autres messages ici sur stackoverflow, mais je n'ai pas réussi à comprendre cela.Android: montrant un dialogue de progression

Mon application télécharge des fichiers sur la carte SD. Je voudrais faire apparaître une boîte de dialogue "chargement ..." pendant que le fichier est en train de le télécharger et ensuite le faire disparaître lorsque le téléchargement est terminé. C'est ce que j'ai trouvé en utilisant l'API Android:

ProgressDialog pd = ProgressDialog.show(this,"","Loading. Please wait...",true); 

//download file 

pd.cancel(); 

Cependant, la boîte de dialogue n'apparaît pas réellement. quand je le débogue, il prétend qu'il est en train de montrer, mais ce n'est évidemment pas à l'écran.

que puis-je faire?

+0

Est-ce que le code de téléchargement fonctionne dans un fil séparé? –

+0

non, il fonctionne sur le même fil que l'activité. – mtmurdock

+0

C'est le problème :) –

Répondre

3

Vous devez exécuter le code de téléchargement dans un fil séparé. Le plus simple est d'utiliser AsyncTask

Regardez aussi this article sur la façon de l'utiliser

+0

J'ai effectivement eu une réunion où nous avons parlé de threading et je l'ai compris. J'ai également dû le mettre dans une activité séparée afin que mon application ne tente pas de charger le fichier avant que l'activité de téléchargement terminé. merci pour votre aide! vous avez les roues qui tournent. – mtmurdock

2

J'ai un scénario assez similaire, plus d'une pause de chargement de niveau alors que des choses est d'être configuré pour une phase d'un jeu. Je lance la boîte de dialogue, commencer le chargement de niveau dans un fil qui est passé le contexte et appeler cela au bout du fil:

mContext.runOnUiThread(new Runnable(){ 
    public void run() { 
     mContext.mProgressDialog.dismiss(); 
    } 
}); 

Je trouve la méthode runOnUiThread() extrêmement utile.