Android l'architecture de l'application - qu'est-ce que le modèle proposé?
De la même façon, un site web ou une application de bureau peut avoir trois ou n-tiers - de l'INTERFACE utilisateur, d'Affaires, de Données, par exemple - qu'est-ce que la structure proposée pour une application sur Android? Comment faites-vous des cours de groupe ensemble, ce que les couches ne vous ont etc?
Je viens juste de commencer Android dev (internet une application qui doit répondre à des notifications entrantes) et n'ont aucune idée réelle de la structure, je suis objectif. Suggestions apprécié.
- Même si cette question remonte à il y a très longtemps, il n'a toujours pas de réponse sélectionnée, ce qui pourrait ne pas aider les personnes ayant encore la question. Je crois que la réponse par @pcjuzer est de très bonne qualité et répond à cette question. Pour ceux qui veulent plus de détails sur le sujet, j'ai écrit une série d'article ici: digigene.com/android-architecture-wolfkcats2
Vous devez vous connecter pour publier un commentaire.
À mon humble avis, Android "veut" suivre un modèle MVC, mais view & controller sont généralement vraiment couplé à des activités.
Il fait de l'unité de test plus difficile et il est difficile d'obéir à la Principe De Responsabilité Unique.
J'ai trouvé un très beau Android architecture présentée ici, il pourrait être une idée. Tout est faiblement couplé, de manière beaucoup plus facile à tester et à modifier.
Évidemment, je suis sûr qu'il ya beaucoup d'autres possibilités (comme le modèle MVP (Model View Presenter) - et voici des réponses à parler de MVP dans Android), mais vous devez toujours prendre un coup d'oeil sur elle.
Android "wants to" follow a MVC pattern
comment venir?J'ai travaillé sur Android depuis 9 mois maintenant à partir d'un serveur d'arrière-plan où plein de tests unitaires et d'architecture en couches sont fréquentes et bien travailler.
À travers beaucoup d'essais et d'erreurs, et je suggère fortement à l'aide de la
Model View Presenter
pattern Modèle-Vue-Contrôleur.Un énorme problème que j'ai trouvé est que
Activities
/Fragments
ont un cycle de vie qui est hors de votre contrôle et peut conduire à des problèmes inattendus.Par exemple, notre principale application android veut être utilisée en mode paysage sur les tablettes. Nous faisons cela en
OnCreateView()
ouOnCreate()
.Sur une Nexus 7, l'affichage par défaut est le portrait de ce qui se passe est qu'il commence l'activité en mode portrait, notre code puis dit d'aller vers le paysage et android crée finalement l'
activity
classe 3 fois!Nous avons accroché des demandes de réseau pour
onCreate
et ils finissent passe 3 fois dans ce cas.Bien sûr, nous pouvons ajouter de la logique de chercher pour dupliquer des appels, mais, à mon avis, il serait préférable, à l'architecture d'essayer de diviser l'INTERFACE utilisateur de la logique métier.
Ma recommandation serait d'utiliser le modèle de fabrique pour créer les présentateurs de l'activité, mais assurez-vous que l'usine ne jamais renvoie la même instance. L'animateur peut alors contenir la logique de faire des requêtes de réseau, rechercher les doublons et de retour en cache des résultats et des affaires générales de la logique.
Lorsque les résultats d'appels réseau de retour, que ce soit la poste à un bus comme Otto qui l'activité (s'inscrire à l'événement sur
onResume()
et désinscrire pendantonPause()
) a enregistré, ou assurez-vous que l'interface de rappel mis en œuvre par l'activité a été mis à jour à la dernière activité dans le presenter.De cette façon, le code dans le
presenter
vers le bas est l'unité vérifiable et ne dépendant pas de l'feuilletée couche d'INTERFACE utilisateur de test.Les actions, les vues et les activités dans Android sont cuites dans la façon de travailler avec l'INTERFACE utilisateur Android et sont une mise en œuvre d'un modèle-vue-vuemodèle modèle, qui est structurellement similaire (dans la même famille que le modèle-vue-contrôleur.
Au meilleur de ma knoweledge, il n'y a pas de moyen de sortir de ce modèle. Il peut probablement être fait, mais vous auriez probablement à perdre tous les avantages que le modèle a, et réécrire votre propre couche d'INTERFACE utilisateur pour le faire fonctionner.
Vous pouvez trouver MVC dans les points suivants:
Il n'y a pas un seul Modèle MVC vous pourriez obéir. MVC seulement des états plus ou moins que vous ne devrait pas se mêler de données et de la vue, de sorte que, par exemple, les vues sont responsables de la tenue des données ou des catégories de traitement de données sont directement affecter la vue.
Mais néanmoins, la manière Android traite avec des classes et des ressources, vous êtes parfois même obligés de suivre le modèle MVC. De plus compliqué dans mon oppinion sont les activités qui sont responsables, parfois, pour la vue, mais tout de même agir comme un contrôleur dans le même temps.
Si vous définissez vos points de vue et des mises en page dans les fichiers xml, de charger vos ressources à partir du dossier res, et si vous évitez de le plus ou moins de se mêler ces choses dans votre code, alors votre de toute façon à la suite d'un patron de conception MVC.
MVP est la dernière architecute la plupart des gens sont les suivantes
Ici, c'est le petit de la documentation Comme Oncle Bob est propre à l'architecture dit, “l'Architecture repose Sur l'Intention, et non Cadres”
Regardez cette vidéo c'est juste mindblowing bon.
Voici un projet spécifique pour Android Architecture des modèles avec bien documenté codes source. Elles sont toutes basées sur le modèle MVP avec plusieurs rebondissements. Vérifiez également les comparaison des différentes solutions basées sur des lignes de code, la testabilité, le coût de l'apprentissage, de leur soutien pour l'augmentation de la complexité des données. Il dépend de la particulièrement développé application et le contexte (temps de mise en marché, les développeurs, les plans futurs, etc.) qui plan qui convient le mieux.