Android: Quel est le meilleur - de multiples activités ou de changement de vues manuellement?
J'ai développé des applications pour Android, et cette question reste toujours:
Comment dois-je structure mon INTERFACE? Dois-je lancer l'activité après activité et de laisser le téléphone pour faire le bouton "retour", ou devrais-je choisir le plus optimisé, mais plus complexe à mettre en œuvre, de façon à commutation manuelle de points de Vue et ensuite manuellement en faisant le bouton "Retour" de la fonctionnalité?
Qu'en pensez-vous (ou de savoir) est la meilleure pratique?
- Pour les nouveaux lecteurs, veuillez noter que cette question est assez vieux, et aujourd'hui, la question est plus susceptible d'être "plusieurs fragments ou de plusieurs activités", plutôt que "de multiples points de vue ou de plusieurs activités". Voir mise à JOUR en stackoverflow.com/a/10794086/199364. Aussi, google pour les autres stackoverflow sujets sur les fragments vs activités - beaucoup de bonnes réponses.
Vous devez vous connecter pour publier un commentaire.
Je dirais que plusieurs Activités presque toujours plus de sens. Je ne pense pas qu'Android est conçu pour les changer constamment son propre point de vue - vous manquez tellement. Vous avez à mettre en œuvre vous-même, vous n'obtenez pas de l'inter-Activité des transitions, vous avez à mettre en œuvre beaucoup de logique interne de reprise d'une application dans l'état correct. Si vous n'avez pas de partition de votre application dans les Activités, il le rend beaucoup plus difficile par la suite de changer le flux de votre application. Il se traduit également par une méga-Activité qui peut être beaucoup plus difficile à gérer qu'un tas de petits morceaux de code.
J'ai du mal à imaginer que la vitesse est vraiment un problème; s'il l'est, il y a quelque chose de mal avec la façon dont vous êtes l'initialisation de chaque Activité. Par exemple, j'ai utilisé tentent de faire passer des objets Sérialisables entre les Activités, et qui s'est avéré être incroyablement lent; quand je suis passé à une méthode plus rapide de passage des objets, de la vitesse de lancement des Activités a augmenté énormément.
Aussi, je pense que c'est révélateur que le Android des lignes directrices pour l'Activité et la Tâche de Conception ne parle pas de changement de Vues à tous; elle est centrée autour d'une Activité comme la Vue de conception.
Je voudrais souligner certains cas où une seule activité peut être la meilleure conception pour une application sur Android qui a plus d'un Affichage en plein écran:
Si les écrans de l'application sont étroitement liés et partagent un Objet commun qu'ils sont tous sur. Dans ce cas un passage autour de l'Objet peut exiger un paquet et peuvent être sujettes à erreur, car il y aura des copies. Un bon exemple peut être un assistant. Oui, vous pouvez utiliser la statique pour accéder à l'Objet commun mais statique peut être dangereux dans Android (pensez à des changements de configuration!)
Si vous voulez vraiment cool animations entre les deux écrans. Peut-être vous voulez un oiseau prendre son envol en un seul écran et de la terre dans un autre écran. Essayez de faire que lorsque chaque écran est une activité!
D'autre part, si l'un de vos écrans est conçu pour être diffusé par un certain nombre d'autres applications alors que l'écran doit être sa propre Activité.
Mise à JOUR Mars 2014:
À ce stade, la question doit maintenant inclure le choix de Fragments. Je pense que les points de Vue sont sans doute les moins susceptibles choix de l'3: l'Activité, le Fragment, la Vue. Si vous souhaitez mettre en place des écrans qui rendent l'utilisation de la touche retour, puis il doit être soit Activties ou des Fragments parce que les deux gérer le bouton en mode natif. Les Fragments doivent être ajoutés à la FragmentManager pile de retour pour le bouton de retour au travail. La gestion des fragments, des dialogues et de la pile de retour peut être un peu de désagrément si!
Mise à JOUR de Septembre 2018:
Certains développeurs de Google recommander seule l'activité des applications en utilisant la nouvelle architecture de navigation composant.
Également garder à l'esprit que la mise en œuvre de votre application avec plusieurs
Activities
donnera à l'utilisateur plus cohérente de l'expérience avec la plate-forme entière. Partie de l'expérience permettra d'être en forme à l'aide de la intégré dans Google apps, de sorte que les utilisateurs seront probablement avoir un temps plus facile à l'aide de votre demande, si elle se comporte de façon similaire à celles qui sont déjà installées sur le téléphone.Différent des autres, j'utilise un mélange des deux, par exemple,
1. Il y a un menu principal lorsque l'application démarre
2. Vous cliquez sur rechercher, vous emmène à l'activité de recherche
3. Ensuite, il y a un bouton filtre, qui permet simplement de visualiser et vous montre les options de filtre
4. Il y a deux boutons à la fin de la vue filtre, cliquer sur "Recherche" ou "Annuler" et vous êtes de retour à l'Affichage de la Recherche de nouveau (sans changement)
5. Maintenant, si l'utilisateur appuie sur le téléphone bouton de retour, il revient au menu principal au lieu de la recherche d'options de filtre. Qui je suppose est le comportement correct.
L'utiliser de la façon de l'utilisateur semble naturel. Et maintenir le tout dans une activité, il est difficile.
Tout dépend de l'application, ce qui sont que vous essayez d'atteindre de meilleures performances, INTERFACE utilisateur plus lisse. À mon humble avis, je préfère la deuxième méthode de contrôle des Activités manuellement, même que c'est plus complexe que vous avez indiqué. C'est une approche que j'ai utilisée dans mon androïd projet, aussi, vous voudrez peut-être jeter un oeil à une classe appelée ActivityGroup (pas sûr de l'emballage) il vous permet d'avoir plusieurs activités que vous pouvez basculer entre les, de la bonne chose à propos de cette classe est que vos activités ne sont pas déchargées lorsque vous basculez mais une mauvaise chose, c'est qu'il faut plus de temps pour charger votre application principale.
Juste mon avis.
Le problème avec le changement de vues, que je suis tombé sur, est aussi causée par le garbage collector. Semble que GC est déclenché lorsque vous quittez l'activité et non de la vue. Donc, la modification des onglets avec une assez complexe les enfants de points de vue, par exemple, sera presque inévitablement conduire à un débordement de la pile d'exception..
J'ai connu beaucoup de problèmes avec de multiples activités de mise en page que je déconseille vivement, sauf si il ya une bonne raison pour le ramasser.
Inconvénient de plusieurs activités
À l'aide de multiples activités, il est bien difficile de refactoriser le code pour renvoyer des données à partir de l'activité.
Si vous appelez un " sub " -activité, alors la principale activité peut être tué. Mais vous n'avez jamais l'expérience que lors du débogage sur un dispositif décent, donc vous avez besoin pour gérer toujours à sauver l'état et correctement l'état de récupération. C'est une douleur. Imaginez l'appel d'une méthode sur une bibliothèque (ie. une autre activité), et vous devez faire en sorte que lorsque la méthode renvoie votre application doit être en mesure de recréer son état complètement avec tous les champs de tous les objets de la VM (ie. de l'activité.restoreIntance). Son fou.
Aussi dans l'autre sens, lorsque vous ouvrez un sous-activité de la VM pourraient avoir été tués depuis le sous-activité a d'abord été engendré, comme lorsque l'application est réduite lors de la sous-activité est affiché.
Son bien plus propre à en avoir un endroit pour stocker pertinentes de l'application de l'état -, et dans mon cas, le plus souvent si la VM est tué, je veux renvoyer l'utilisateur à l'écran principal, et de les laisser faire leur truc, parce que je ne pas passer de 30 à 50 heures de codage sauvegarder/restaurer ses fonctionnalités que 0,1% des utilisateurs aurez jamais l'expérience.
Alternative
Fragments ou tout simplement vous gérer l'activité des vues sur vous-même. Gestion des vues manuellement, nécessite un codage certains de commutation alternative à des activités/des fragments avec des transitions si vous le souhaitez.
Et non il ne signifie pas une méga-activité, comme suggéré dans la accepté de répondre, de toute autre manière que d'une seule de ses méga-app. Il faut juste un peu plus de la conception de la base de code dans les pièces de raccord, parce qu'il y a un peu plus de travail gestion des vues, bien que beaucoup moins de travail de la gestion de l'activité de l'état et autres bizarreries.
Éventuellement pertinentes: Reddit: C'est officiel, Google recommande officiellement seule activité, application architecture