6
votes

Android AsyncccTask à l'intérieur de l'AsynccTask

Donc, je travaille sur un décodeur de code à barres, qui, une fois que nous aurons le code à barres, se multiplie l'API sur Internet pour décoder ce qui n'était que scanné. La chose est que je dois lier certains XML analysant ensemble, et je ne sais pas si je le fais bien.

Donc, une fois que le code à barres est numérisé, mon programme appelle un système d'asyncaptage qui passe sur une API pour récupérer le nom du produit. Une fois qu'il a le nom, je veux que cela appelait un autre asynccère. Je sais que cela est possible en instanciant des asynchrones dans le surpostexecute () de l'autre mais, je pense que c'est faux, car c'est comme des cases dans des cases. Alors, n'est-ce pas possible / préférable d'instancier mon deuxième masque d'asyncaptage dans mon activité principale et de le faire attendre jusqu'à ce que mon premier match d'asynccte soit terminé?

(L'anglais n'est pas ma langue principale, j'espère que je me suis fait clairement).


4 commentaires

Quelle est la raison d'utiliser 2 tâches? Pourquoi ne pas faire ce que vous voulez dans les premières tâches doinbackground?


Nous ne devrions pas nous moquer de la langue (anglais) car ce n'est peut-être pas sa langue principale


@Renard Il semble trop désordonné de laisser tout dans le champ de doinback. Mon premier arrêt d'asyncaste peut renvoyer différents résultats qui doivent d'abord être traités, puis, selon le résultat, faire une certaine analyse plus. Donc, le lancement d'un autre asynctack permettez-moi de diviser le code dans plusieurs parties et de le rendre plus clair.


@MagicMicky: Oui, mais vous n'avez pas nécessairement besoin d'un système d'asyncaptage pour cela. Vous avez peut-être besoin d'une méthode différente.


3 Réponses :


1
votes

Dans des situations telles que celles-ci, il pourrait être préférable d'utiliser des opérations de course à longues longues dans un système d'asyncaptage.

Une autre option consiste à utiliser l'API de chargeurs, cela rend les tâches de chaînage beaucoup plus faciles http. : //developer.android.com/guide/topics/fundamentals/loaders.html


0 commentaires

17
votes

Je pense qu'il est absolument légitime de démarrer le second asynccttask dans le oiPostexecute du premier asyncccte, mélangeant les deux opérations est une mauvaise idée logique, comme "la progéniture". - "tu dois me garder" séparés "

Si vous ne voulez pas qu'il soit directement à l'intérieur du Onpostexecute , définissez un gestionnaire pour l'exécuter dans l'activité et appelez ce gestionnaire de Onpostexecute .

et dernière chose - si vous avez beaucoup de logique - déplacez-le dans un fichier séparé, ne conservez pas tout le même fichier.


1 commentaires

D'accord, je vais essayer de définir un gestionnaire dans mon activité et de l'appeler à partir du Onpostexecute () . Et oui, j'ai plusieurs fichiers, même plusieurs paquets. Ceci est mon premier vrai projet Android, je veux que ce soit aussi propre que possible!



0
votes

Vous pouvez aller pour une autre approche si vous faites face souvent à une situation comme celle-ci. C'est-à-dire de fusionner des demandes et des opérations à l'intérieur des runnables / calables et de les gérer séparément au sein d'une file d'attente par exemple. Voici une bonne approche. http://ugiagonzalez.com/2012/07/ 02 / Theres-Life-Life-After-AsyncCtasks-in-Android /


0 commentaires