2012-06-02 5 views
7

Je ne suis pas un pro Android mais j'ai développé une application composée de plus de 50 activités qui rend l'application vraiment grande. Après 8 semaines de développement, il y a maintenant des problèmes qui ont rendu l'application difficile à maintenir et à améliorer. les principaux que je traite sontAndroid: une seule activité, plusieurs vues

  1. Je ne peux pas passer référence d'objet aux constructeurs d'activités. En fait, j'ai trouvé les mécanismes de startActivityForResult - Intent - onActivityResult vraiment limitant et résulte en code corrompu de nombreuses constantes pour les actions par activité et beaucoup de switchcase qui est vraiment difficile à suivre le flux de l'application.

  2. Un autre problème est que je ne sais pas comment gérer le cycle de vie de toute l'application car chaque activité a son propre cycle de vie.

J'ai eu une expérience réussie avec LWUIT et J2ME – polish qui ignorent MIDlets J2ME (similaires à l'activité android) et mettre en œuvre leur propre architecture et système de fenêtrage avec un seul MIDlet que l'entrée à l'application. Je suis venu avec la même idée pour Android.

Pour clarifier les choses, je pense à une application avec juste une des principales Activity et d'autres activités mises en œuvre sous forme d'objets qui étendent l'objet View et ces vues peuvent être ajoutées dynamiquement à l'activité principale FrameLayout et la pile sur l'autre. La logique des activités peut être implémentée dans de telles classes et j'ai même trouvé un moyen d'implémenter des dialogues de cette manière. Les objets d'entreprise et d'état peuvent être transmis à leur constructeur et il semble bon d'ignorer son effet secondaire d'écrire un peu plus de code. De cette façon, les écouteurs peuvent également être transmis aux constructeurs de vues, ce qui facilite le changement d'interface utilisateur et la gestion des flux.

Mais les questions sont:

  • Est-ce une bonne pratique?
  • Cela ne me mènerait-il pas à des problèmes de performance ou de mémoire?

Je suis aussi au courant de

Aucune de ces questions porte clairement sur les performances ou la pratique des preuves ou une référence documentée raisonnable

S'il vous plaît quelqu'un m'aider avec cela

+0

Lorsque le projet est si énorme, le code doit être conçu correctement, retirer toutes les fonctionnalités communes. mieux structurer les données (meilleures structures de données). Ceux-ci vont selon moi aider à réduire beaucoup de code. – sat

+0

en fait je l'ai fait. J'ai suivi un modèle semi MVVM bien que Android ne supporte pas la liaison de données. les principaux problèmes résident dans la couche d'interface utilisateur et les vues de commutation et de glowing togather. – anonim

Répondre

6

Il ya des applications populaires sur le marché avec seulement une ou quelques activités. Ils utilisent des fragments et les commutent. Je préférerais des fragments sur votre approche. Bien que je pense que les fragments sont trop complexes pour de nombreuses raisons, pour votre utilisation, ce serait une bonne solution. Votre comportement d'interface utilisateur doit être fragmenté et votre activité est la partie du contrôleur qui transfère des données entre vos fragments. Les fragments ont aussi leur propre cycle de vie.

Je n'aime pas startActivityForResult non plus.Si j'ai un ensemble d'activités - toutes fournissant des données - et je ne sais pas dans quel ordre elles seront appelées, je préfère utiliser une classe singleton puis utiliser des intentions pour la transmission de données entre les activités. Mais vous devez analyser votre problème pour obtenir une bonne solution.

+0

En fait, j'ai également exploité le modèle singleton comme l'application est un seul utilisateur, mais mon problème est avec Intents. Je ne peux pas sérialiser les auditeurs et les passer dans d'autres activités pour le traitement des rappels basés sur les actions de l'utilisateur et sur Fragment, je suis absolument d'accord avec vous mais quand j'ai commencé le projet je n'étais pas au courant des fragments de les utiliser parce que je ne suis pas complètement familier avec eux. Je peux les utiliser dans la prochaine version de l'application. Merci – anonim

+4

Comment fou serait-il de construire un cadre MVC approprié sur Android en utilisant une seule activité en tant que médiateur entre les contrôleurs et le reste du cadre Android? Semblable à ce qui se passe dans le monde du Web avec des applications d'une seule page. Message/Email moi si vous êtes intéressé à collaborer sur ce sujet. :) – Marchy

+0

Im bussy pour le moment, mais si vous démarrez un tel projet, vous pouvez me contacter pourrait être possible que je pourrais passer du temps à l'avenir pour cela. –

Questions connexes