spectacle et rejeter boîte de dialogue de progression lors de l'exécution d'un thread dans android

J'ai une méthode dans mon activité de télécharger un ensemble de fichiers. Ce téléchargement prend de la place quand je commence une nouvelle activité. J'ai utilisé les threads, car il télécharge complètement alors que AsyncTask peut parfois ne parviennent pas à télécharger tous les fichiers, il peut rester coincé entre les deux.

Maintenant, un écran noir s'affiche lorsque le téléchargement a lieu. Je veux montrer à l'intérieur d'un ProgressDialog de sorte que l'utilisateur peut sentir que quelque chose a été téléchargé.

J'ai ajouté un ProgressDialog, mais il n'affiche pas. Quelqu'un peut-il dire où j'ai fait de mal?

Ci-dessous mon code:

À l'intérieur de onCreate() j'ai écrit:

downloadFiles();

private boolean downloadFiles() {
    showProgressDialog();
    for(int i = 0; i < filesList.size();i++) {
        Thread thread = new Thread(new Runnable() {    
            @Override
            public void run() {
                //downloading code
         });
         thread.start();
         thread.run();
    }
    dismissProgressDialog();
    return true;
}

//ProgressDialog progressDialog; I have declared earlier.
private void showProgressDialog() { 
    progressDialog = new ProgressDialog(N12ReadScreenActivity.this);
    progressDialog.setProgressStyle(ProgressDialog.STYLE_SPINNER);
    progressDialog.setMessage("Downloading files...");
    progressDialog.show();
}

private void dismissProgressDialog() {
    if(progressDialog != null)
        progressDialog.dismiss();
}
Peut-être que cela ne résout pas la question, mais pourquoi l'appelez-vous fil.run()? Vous pouvez les appeler fil.start (), le thread va être créé. J'ai toujours été à l'aide de AsyncTask pour le téléchargement de plusieurs fichiers et jamais eu de problèmes avec elle à l'aide, et la mise à jour de l'UI thread n'est pas une tâche difficile.

OriginalL'auteur Mathew | 2011-06-23