2017-01-12 5 views
3

Ich habe eine App, die 15 verschiedene Abschnitte hat. Ich benutze eine einzelne Aktivität mit einer FrameLayout, wo ich 15 verschiedene Fragmente mit einem NavigationDrawer laden. Ich habe auch Kindfragmente unter wenigen Elternfragmenten, wo ich Swipe-Tab-Layout laden.Sind viele Fragmente eine schlechte Übung?

Also, kurz gesagt, ich habe viele Fragmente in meiner App.

Das Problem ist, wenn ich die Fragmente zum BackStack beim Hinzufügen zum FrameLayout hinzufügen, werden die Fragmente nie zerstört, solange meine App lebt (nur View wird zerstört, was erwartetes Verhalten ist). Wenn der Benutzer weiterhin auf verschiedene Fragmente schwebt, wird die Größe des BackStacks immer größer, was zu Speicherproblemen führen kann.

So begann ich zu googeln und fand mehrere Threads in SO wo einige suggests against using Fragments at all. Aber wenn ich jeden Abschnitt mit seiner eigenen Aktivität gestalten möchte, muss ich NavDrawer zu jeder Aktivität hinzufügen (oder zumindest diese Aktivität auf eine Basisaktivität ausdehnen), was ich nicht sicher bin, wenn es umsichtig ist.

Das lässt die Frage, ist es ein gutes Design, viele Fragmente in einer einzigen Aktivität zu haben? Wenn es in Ordnung ist, sollte ich die Fragmente zum BackStack hinzufügen? Wenn ich sollte, was ist mit Speicherproblemen? Und hat schließlich jemand NavigationDrawer über verschiedene Aktivitäten versucht? Ist es effizient?

Meine Entschuldigung für eine Reihe von Fragen.

Bearbeiten: Basierend auf den Antworten, so weit ich das klären möchte, weiß ich, dass es eine Art generische Frage ist, und kann verschiedene meinungsbasierte Antworten ergeben. Ich möchte also klarstellen, dass ich keine entscheidende Antwort suche (weil es vielleicht keine gibt), sondern eine Diskussion eröffnen wollte, um aus verschiedenen Perspektiven zu hören.

+1

Diese Frage dient nur dazu, meinungsbasierte Antworten zu erhalten - Sie haben bereits gegensätzliche Meinungen erwähnt! Denken Sie, dass die Verwendung von Aktivitäten effizienter ist? Denken Sie daran Aktivitäten haben auch einen Aktivitätsstapel. Nur Sie können Ihre eigene Frage beantworten, indem Sie beides testen und die Leistung und Speichernutzung analysieren. Die Anzahl der Fragmente ist nicht das Problem, wie Sie mit ihnen aus einer Navigationsperspektive interagieren und was sie enthalten ist ... Bilder usw. –

+0

Hmm, ich stimme zu ..Ich weiß, ich habe eine allgemeine Frage gestellt. Eigentlich hatte ich genau gehofft, die verschiedenen auf Meinungen basierenden Antworten zu bekommen, um mein Verständnis mit mehr Erfahrung zu überprüfen. Ich suche eigentlich keine entscheidende Antwort (weil es keine gibt, wie Sie gesagt haben). Natürlich habe ich mich nach meiner Recherche für Fragments entschieden, aber ich habe diese Diskussion nur eröffnet, um widersprüchliche Ansichten zu hören. – abdfahim

Antwort

1

Dies ist eine sehr allgemeine Frage.

Verwenden von Fragmenten ist ein gut getestet Android-Muster. Sie bieten Ihnen einen praktischen, kleinen View Controller mit einem vollständig verwalteten Lebenszyklus. Das ist ordentlich.

Aber Fragmente sind nicht immer das richtige Werkzeug für den Job.

Meine Faustregel lautet: Ich benutze Fragmente, wenn ich einen komplexen View-Lebenszyklus verwalten muss, für Fragment-Animationen und immer dann, wenn ich eine Aktivität brauche, die nicht Vollbild ist.

Wenn Sie viele Fragmente haben, dann fragen Sie sich, was Sie können abstract or generalise. Zum Beispiel: Die meisten Listen-Fragmente sehen aus und führen dasselbe aus, und jede Zeile sollte wahrscheinlich nicht in einem eigenen Fragment implementiert werden.

Der Backstack ist, IMHO, ein UX Werkzeug. Es muss so verwaltet werden, wie es in der Geschäftslogik Ihrer App sinnvoll ist. Es ist ein Tool, mit dem Sie Ihre App auf natürliche Weise navigieren können. Es macht also keinen Sinn, mehr als 4 oder 5 Fragmente in den Stapel zu schieben, da Sie nicht erwarten sollten, dass sich der Benutzer 5 Navigationsentscheidungen auswendig merkt. Wenn Sie sich in einer großen Backstack-Situation befinden, müssen Sie wahrscheinlich Ihr UX-Design überdenken.

+0

Danke Vaiden. Ich weiß, dass es eine generische Frage ist, deshalb habe ich versucht, so viel wie möglich zu geben (immer noch generisch, stimme ich zu). Der Punkt ist, dass alle meine 15 Abschnitte völlig unabhängig voneinander sind, und sie haben keine Ähnlichkeit im Blick (ich habe Fragmente bereits wiederverwendet, wo immer ich kann). Der einzige Grund, warum ich Fragmente für verschiedene Aktivitäten auswähle, ist die Verwendung mit Navigation Drawer, da ich kein Nischendesign gefunden habe, um NavDrawer mit Activity zu verwenden. – abdfahim

Verwandte Themen