43 votes

Android: AsyncTask recommandations: cours privé ou public de la classe?

Je suis en train de développer certaines Applications Android au sein d'une équipe et nous avons utilisé 2 approches différentes au cours du dernier mois (un que j'ai personnellement visez plutôt, et de l'autre que l'autre développeur préfère).

Bien que jusqu'à présent, les résultats sont les mêmes, cela m'a demande...devrions-nous:

  • utilisation AsyncTasks que des cours privés à l'intérieur des Activités qui les utilisent.
  • ou utiliser AsyncTasks comme publics distincts classes qui reçoivent le contexte de l'activité

Les approches recommandées par Google?

Quelle est votre expérience à dire à ce sujet (avantages, inconvénients, problèmes)?

36voto

Ted Hopp Points 122617

Les classes internes sont bonnes pour la représentation des objets qui sont destinés à être privé ou d'une certaine façon intimement liée à la classe englobante. Il y a parfois des raisons techniques pour l'utilisation des classes internes (par exemple, la simulation de fermetures). Ils ont aussi coupé vers le bas sur la pollution de l'espace de noms.

Un désavantage de l'intérieur des classes, c'est que si ils ont accès privé membres (champs ou fonctions) de la classe englobante, le compilateur va générer des fonctions d'accesseur à ces membres. Langue les puristes diront si cette rupture de l'encapsulation est une Bonne Chose ou une Mauvaise Chose. Les fonctions d'accès à ajouter un peu de surcharge pour chaque accès (ce qui n'est généralement pas un facteur, mais il est là). Un autre inconvénient est que cela rend le fichier source plus complexe et donc plus difficile à gérer. (J'ai parfois été piqué par une modification d'une fonction à l'intérieur de la classe tout en pensant que c'était à l'extérieur de la classe, et vice-versa.) Enfin, les classes internes ont tendance à ne pas être réutilisable, tandis que les classes séparées peuvent souvent être paramétré pour avoir de multiples utilisations.

Ces avantages et inconvénients sont sur le dessus de ma tête. Je suis sûr que d'autres ont d'autres pensées.

Mise à JOUR:

Dans ce Google IO vidéo de l'intérieur AsyncTask option est clairement identifié comme étant mauvaise option.

7voto

hackbod Points 55292

Il n'a pas d'importance, utilisez ce qui fait le plus de sens pour votre code. La chose importante est de regarder pour un async tâche qui est maintenant une référence sur une activité après l'activité a été détruit, soit implicitement comme un intérieur de classe de l'activité, ou explicitement par l'activité/objet de contexte.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X