6
votes

Annuler le téléchargement de fichier avec httpClient et asynccier

Dans mon application, j'ai besoin de télécharger des fichiers des emplacements d'URL. Je souhaite afficher l'avancement du téléchargement dans une boîte de dialogue (ou éventuellement dans la zone de notification). J'ai rencontré plusieurs bonnes ressources sur ce sujet (quelque chose comme http: // Progrnotes .blogspot.com / 2010/09 / C-Android.html ). Malheureusement, tous les exemples ne fournissent pas d'indication claire sur la manière d'annuler correctement un téléchargement par demande de l'utilisateur. Donc, ma question est en fait assez simple:

Compte tenu d'un masque d'asyncaptage qui télécharge le fichier en arrière-plan (avec httpclient) et affiche une boîte de dialogue avec Télécharger la progression et un bouton Annuler, comment puis-je annuler le téléchargement et arrêter la tâche d'arrière-plan lorsque vous appuyez sur le bouton?

Je sais que tuer des threads n'est généralement pas une bonne idée, alors je devrai probablement travailler avec une variable d'annulation dans mon fil de fond. Comment communiquer un signal d'arrêt du bouton de l'asyncaptage?

Cordialement, Ivo


0 commentaires

3 Réponses :


3
votes

avoir votre bouton appeler asynctack.cancel (true) , puis vérifier iScanceled () à partir de l'intérieur doInbackground (paramètres ... paramètres) . De cette manière, vous pouvez communiquer sur le fil d'arrière-plan que le téléchargement doit être annulé et vous pouvez prendre les étapes appropriées pour l'arrêter.


2 commentaires

Merci, ça sonne comme la solution! (En fait, j'ai vu l'option Annuler dans la référence, mais j'ai lu des plaintes concernant la fiabilité de cette fonctionnalité). Vérification souvent sur Iscancéd () dans mon fil devrait fonctionner.


Il suffit d'appeler la fonction "Oncanceled", mais la tâche du téléchargeur toujours en cours d'exécution n'est pas? Je veux un moyen d'arrêter la tâche de téléchargement. Comment faire ça