Android - fragmenty vs aktywności

0

Chciałbym napisać pewną aplikację na system Android i mam pewien dylemat związany z architekturą aplikacji. Uważam, że można aplikację tworzyć na co najmniej dwa sposoby:

Sposób 1

Jest jedno activity na całą aplikację a wszystkie widoki z kontrolkami przechowywane są we fragmentach. Dla przykłądu załóżmy, że tworzymy aplikację umożliwiającą zarządzanie produktami i potrzebujemy:

  • wyświetlić listę produktów
  • wyświetlić formularz dodawania nowego produktu

Listę produktów można by umieścić we fragmencie 1, a formularz dodawania produktu we fragmencie 2. Po starcie aplikacji pierwszy fragment umieszczony byłby na całej powierzchni głównego activity. Po kliknięciu na przycisk "dodaj produkt", fragment 1 zostałby podmieniony na fragment 2.

Sposób 2

Każdy ekran to osobne activity

Chciałbym wiedzieć jakie są wady i zalety obu rozwiązań. Teoretycznie drugi sposób wydaje się lepszym rozwiązaniem ponieważ kojarzy się z lepszą separacją poszczególnych części aplikacji. Z drugiej jednak strony odnoszę wrażenie, że sposób pierwszy ma jakieś zalety, których na chwilę obecną nie dostrzegam (może to być np. łatwość w wymianie danych między różnymi częściami aplikacji czy płynność w sytuacji zmiany jednego widoku na drugi).

1

Obydwa sposoby mają wady. Najlepiej jest zachować swego rodzaju umiar pomiędzy aktywnościami i fragmentami. Podam prosty przykład, masz ekran główny aplikacji i przechodzisz do ekranu ustawień. Załóżmy, że ekran ustawień również ma kilka ekranów (np. jest opcja ustawienia zaawansowane). Wtedy dobrze dla ustawień zrobić osobną aktywność, która będzie podmieniać fragmenty z odpowiednią kartą ustawień. W ten sposób masz ładnie odseparowaną logikę. Jeżeli zrobisz wszystko na jednej aktywności to skończy się to prawdopodobnie tak, że będziesz miał klasę, która ma trochę metod do obsługi ustawień i trochę metod do obsługi innych fragmentów.

1
niezalogowany napisał(a):

Obydwa sposoby mają wady. Najlepiej jest zachować swego rodzaju umiar pomiędzy aktywnościami i fragmentami. Podam prosty przykład, masz ekran główny aplikacji i przechodzisz do ekranu ustawień. Załóżmy, że ekran ustawień również ma kilka ekranów (np. jest opcja ustawienia zaawansowane). Wtedy dobrze dla ustawień zrobić osobną aktywność, która będzie podmieniać fragmenty z odpowiednią kartą ustawień. W ten sposób masz ładnie odseparowaną logikę. Jeżeli zrobisz wszystko na jednej aktywności to skończy się to prawdopodobnie tak, że będziesz miał klasę, która ma trochę metod do obsługi ustawień i trochę metod do obsługi innych fragmentów.

Nie do końca się zgodzę z Twoją wypowiedzią. Problem nie leży w tworzeniu jednej dużej klasy, możesz przecież utworzyć pare klas gdzie z każda klas będzie obsługiwała konkretnę zdarzenie z menu z użyciem klasyfiakcji hierarchicznej. Fragmenty to nowy sposób tworzenia GUI w Androidzie który jest bardzo przydatny, sczególnie kiedy przechodzimy do trybu Horyzontalnego, możemy wtedy podmienić dany fragment na inny lub po prostu dodać istniejący z rozbudowaną funkcjonalnością GUI. Większość aplikacji ma teraz GUI tworzone przy pomocy fragmentów, gdyż jest to po prostu bardziej efektywny sposób, czasem nie chcesz tworzyć nowego Activity, fragment traktuj jako subActivity, plusem fragmentów jest to iż można je dodać do BackStack'u tak samo jak Activity...

Wszystko zależy od developera którą ścieżke wybierze, jak dla mnie użycie fragmentów jest po prostu przyjemniejsze i bardziej efektywne w niektórych sytuacjach...

1

Albo ...
http://corner.squareup.com/2014/10/advocating-against-android-fragments.html

Alternatywa dla fragmentów polecana przez Square.

1 użytkowników online, w tym zalogowanych: 0, gości: 1