Jakie są różnice między aktywnością a fragmentem?


80

Jak wynika z moich badań, istnieje znacząca różnica w koncepcji backstack i sposobu ich istnienia:

Czynność

  • Gdy activityumieszcza się do backstackod activitiesużytkownika może poruszać się z powrotem do poprzedniego działalności tylko przez naciśnięcie back przycisku.

  • Activity może istnieć niezależnie.

Fragment

  • Po fragmentumieszczeniu w czynności musimy zażądać zapisania instancji, dzwoniąc w addToBackstack()trakcie fragment transaction.

  • Fragment musi mieszkać wewnątrz activity

Czy są jakieś dodatkowe różnice?


8
Fragmenty nie muszą być deklarowane w manifeście. Mamy zagnieżdżone fragmenty, ale nie możemy mieć zagnieżdżonych działań
hoomi

Odpowiedzi:



38

Główne różnice między aktywnością a fragmentem

  1. Aktywność to składnik aplikacji, który zapewnia interfejs użytkownika, w którym użytkownik może wchodzić w interakcje. Fragment jest częścią działania, które wnosi własny interfejs użytkownika do tego działania.
  2. W przypadku tabletu lub telefonu komórkowego w orientacji poziomej, używając fragmentu, możemy wyświetlić dwie listy, takie jak jedyna lista pokazująca nazwę stanu, a inne listy pokażą opis stanu w pojedynczej czynności, ale za pomocą działania nie możemy zrobić tego samego.
  3. Aktywność nie jest zależna od fragmentu, ale fragment jest zależny od Aktywności, nie może istnieć samodzielnie.
  4. bez użycia fragmentu w działaniu nie możemy utworzyć wielopanelowego interfejsu użytkownika. ale używając wielu fragmentów w jednym działaniu możemy stworzyć wielopanelowy interfejs użytkownika.
  5. Jeśli tworzymy projekt używając tylko Activity, to jest trudny do zarządzania, ale jeśli użyjemy fragmentów, to struktura projektu będzie dobra i łatwo sobie z tym poradzimy.
  6. Działanie może zawierać 0 lub wiele fragmentów. Fragment można ponownie wykorzystać w wielu działaniach, więc zachowuje się jak składnik wielokrotnego użytku w działaniach.
  7. Aktywność ma swój cykl życia, ale fragment ma swój własny cykl życia.
  8. W przypadku Aktywności wystarczy wspomnieć w Manifeście, ale dla fragmentu nie jest to wymagane.
  9. Aktywność zajmuje dużo pamięci, a fragment jest używany bez pamięci.
  10. Aktywność nie jest lekką wagą. Fragment jest lekkim ciężarem.

Niezłe wyjaśnienie.
Abhishek kumar

Czy ktoś może rozwinąć temat # 10. Co sprawia, że ​​fragment jest lekki w porównaniu z aktywnością?
dazzieta

# 7 nie ma sensu: - \
t3chb0t

23

Zgodnie z dokumentacją dla programistów Androida, różnica między fragmentem a aktywnością w ich cyklu życia.

Link do dokumentu http://developer.android.com/guide/components/fragments.html#Lifecycle

Najbardziej znacząca różnica w cyklu życia między działaniem a fragmentem polega na tym, jak jest on przechowywany w odpowiednim tylnym stosie. Działanie jest domyślnie umieszczane na stosie działań zarządzanych przez system po jego zatrzymaniu (tak, aby użytkownik mógł wrócić do niego za pomocą przycisku Wstecz, jak omówiono w zadaniach i wstecznym stosie). Jednak fragment jest umieszczany na stosie zapasowym zarządzanym przez działanie hosta tylko wtedy, gdy jawnie zażądasz zapisania instancji, wywołując metodę addToBackStack () podczas transakcji, która usuwa fragment.

W przeciwnym razie zarządzanie cyklem życia fragmentu jest bardzo podobne do zarządzania cyklem życia działania. Tak więc te same praktyki dotyczące zarządzania cyklem życia działania mają również zastosowanie do fragmentów. Musisz jednak również zrozumieć, w jaki sposób czas trwania działania wpływa na życie fragmentu.

& dla układów wielopanelowych, których musisz użyć fragment, których nie możesz osiągnąć activity.


20

Aktywność to interfejs użytkownika aplikacji, za pośrednictwem którego użytkownik może wchodzić w interakcje, a fragment jest częścią działania, jest to poddziałanie wewnątrz działania, które ma własny cykl życia, który przebiega równolegle do cyklu życia działań.

Activity LifeCycle                           Fragment LifeCycle
onCreate()                                     onAttach()
    |                                              |
onStart()______onRestart()                     onCreate()
    |             |                                |
onResume()        |                            onCreateView()
    |             |                                |
onPause()         |                            onActivityCreated()
    |             |                                |
onStop()__________|                             onStart()
    |                                              |
onDestroy()                                    onResume()
                                                   |
                                                onPause()
                                                   |
                                                onStop()
                                                   |
                                              onDestroyView()
                                                   |
                                               onDestroy()
                                                   |
                                               onDetach()

5

Ćwiczenie
1. Działania są jednym z podstawowych elementów składowych aplikacji na platformę Android. Służą jako punkt wejścia do interakcji użytkownika z aplikacją, a także są kluczowe dla sposobu nawigacji użytkownika w aplikacji lub między aplikacjami
2. Metody cyklu życia są obsługiwane przez system operacyjny.
3. Cykl życia działalności

Fragmenty
1. Fragment reprezentuje zachowanie lub część interfejsu użytkownika w działaniu. Możesz połączyć wiele fragmentów w jednym działaniu, aby zbudować wielopanelowy interfejs użytkownika i ponownie użyć fragmentu w wielu działaniach. Możesz myśleć o fragmencie jako modułowej sekcji działania, która ma swój własny cykl życia, odbiera własne zdarzenia wejściowe i którą możesz dodawać lub usuwać w trakcie działania.
2. Metody cyklu życia są obsługiwane przez usługę hostingu.
3. Cykl życia fragmentu

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.