2015-04-10 3 views
1

J'ai une tâche d'arrière-plan qui télécharge des images et des vidéos sur le serveur.ios annuler dispatch_async tâche

L'utilisateur peut annuler cette opération au milieu.

Je me demandais s'il y a un moyen facile d'informer les tâches à arrêter au lieu d'avoir un booléen qui doit être vérifié afin d'arrêter

(et le principal problème est que l'utilisateur peut revenir à le processus une fois de plus et réactiver le booléen avant que la "mauvaise" vidéo ne finisse de télécharger)

Répondre

2

NSOperationQueue a la possibilité d'annuler des opérations. Par exemple, vous pouvez créer une série de NSOperations et les ajouter à un NSOperationQueue, puis envoyer le message -cancelAllOperations à la file d'attente lorsque vous n'en avez pas besoin pour terminer.

Ensuite, lorsque l'utilisateur revient en arrière, l'opération sera à nouveau créée et la demande sera envoyée dans la file d'attente.

L'utilisation de ceci est probablement la meilleure solution. Le tuer est une entreprise risquée qui peut mener à des comportements volatils et imprévisibles. Tuer le fil est souvent une mauvaise idée en raison de l'allocation et retient nous ne pouvons pas nécessairement suivre.