2011-02-07 5 views
0

J'ai une classe abstraite de base dont tous mes asynctasks s'étendent. J'ai intégré dans la gestion des erreurs pour les erreurs de réseau où j'affiche une boîte de dialogue à l'utilisateur en leur disant qu'ils peuvent réessayer leur demande (après tout, c'était une erreur de réseau ...).Meilleure pratique Java pour réessayer asynctask (android)

J'ai un peu de mal à "réessayer" ma tâche asynchrone puisqu'une fois qu'elle est exécutée, vous ne pouvez plus l'exécuter. Comment pourrais-je faire ça? Dois-je utiliser la réflexion pour instancier la même classe et réessayer?

Est-ce que quelqu'un a déjà traité ce problème? ici

+0

Peut-être que vous pourriez publier le code pour votre traitement des erreurs actuelles? –

Répondre

1

semble être la réponse dont vous avez besoin:

How to run a retry when download fails in AsyncTask

+0

Ne m'aide pas vraiment car je ne veux pas utiliser un IntentService ou un Service pour ces tâches. Je veux éviter la liaison pour obtenir les résultats ou utiliser ResultReceiver + IntentService. J'ai du mal à ré-instancier le même asynctask et appeler execute() dessus. – dnkoutso

1

AsyncTasks sont à usage unique et ne peut être exécutée une fois. Une exception sera levée si une seconde exécution est tentée. La solution consiste simplement à créer une nouvelle AsyncTask et à l'exécuter.

+0

Oui, je sais cela, mais comment allez-vous et recréer automatiquement pour tous les asynctasks. Je veux que cette logique soit cachée et se produise automatiquement quand l'utilisateur clique sur "Réessayer", quel que soit le type de tâche. – dnkoutso

Questions connexes