2011-03-31 3 views
7

J'utilise IntentService pour gérer les gros téléchargements de fichiers dans mon application. Mais quand je veux annuler le téléchargement, j'appelle stopService(intent). Cependant, la méthode onDestroy() est appelée, mais le téléchargement ne s'arrête pas. Que dois-je faire d'autre pour annuler le téléchargement? Merci.Comment arrêter un IntentService?

+1

vous devez travailler avec des instances singleton et rechercher un message de gestionnaire pour arrêter votre téléchargement. – papachan

+2

pourriez-vous me donner un peu plus? Je ne sais pas vraiment ce que je devrais faire avec ceci. – notme

Répondre

8

Je n'ai pas compris cela moi-même, mais j'envoyer un Intent avec:

intent.putExtra("pause", "yes"); 
startService(intent); 

Et puis-je remplacer public int onStartCommand(Intent intent, int a, int b) à l'intérieur du IntentService (non recommandé) et de voir que « pause » est « oui » J'ai mis un booléen statique mPaused à true. Si vous avez une boucle dans onHandleIntent, ajoutez && !mPaused dans la condition de boucle.

Bien sûr, cela est tout le code « mauvais » et un hack ... mais j'espère que quelqu'un d'autre carillons avec la bonne façon de le faire.

+0

Pas un mauvais code, je pense. C'est une façon correcte de mettre un service en pause. –