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: p>
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? P >
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? P>
Cordialement, Ivo p>
3 Réponses :
avoir votre bouton appeler asynctack.cancel (true) code>, puis vérifier
iScanceled () code> à partir de l'intérieur
doInbackground (paramètres ... paramètres) code> . 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. P>
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
J'appellerais annuler (vrai) a > sur votre objet asynctatique. Cela interrompt votre fil via manipulation normale d'interruption . Vous pouvez alors demander à l'asyncqueTâche si elle iScanceled () a>. p>
Mettre un Catch (interromptionException e) code> La ligne de l'asyncaptage indique que
interrompteException code> n'est jamais lancé. Donc, cela ne semble pas être une solution de travail.
Quelle est votre référence que "cela interrompt votre fil via une manipulation d'interruption normale"?
Je vous suggérerais de passer à travers ce lien pour le côté Google a publié une bibliothèque appelée "volley" qui est utilisée de nos jours pour une mise en réseau plus rapide et meilleure. P>
Il résout mauvais points forts> des masques d'asyncaptage. P>