В чем разница между активностью и фрагментом?

80

Согласно моему исследованию, существует значительная разница в концепции backstack и в том, как они существуют:

Деятельность

  • Когда activityпомещается в backstackо activitiesпользователь может перейти обратно к предыдущей деятельности, просто нажав на back кнопку.

  • Activity могут существовать независимо.

Фрагмент

  • Когда объект fragmentпомещается в действие, мы должны запросить сохранение экземпляра путем вызова addToBackstack()во время fragment transaction.

  • Fragment должен жить внутри activity

Есть ли дополнительные отличия?

Деврат
источник
8
Фрагменты не нужно объявлять в манифесте. У нас есть вложенные фрагменты, но у нас не может быть вложенных действий
hoomi

Ответы:

52

Это две совершенно разные вещи:

Действие - это компонент приложения, который предоставляет экран, с которым пользователи могут взаимодействовать, чтобы что-то делать. Подробнее: http://developer.android.com/guide/components/activities.html.

В то время как фрагмент представляет поведение или часть пользовательского интерфейса в Activity. http://developer.android.com/guide/components/fragments.html

Юрій Мазуревич
источник
38

Основные различия между Activity и Fragment

  1. Активность - это компонент приложения, который предоставляет пользовательский интерфейс, в котором пользователь может взаимодействовать. Фрагмент - это часть операции, которая вносит свой вклад в это действие.
  2. Для планшета или мобильного устройства в альбомной ориентации. Используя фрагмент, мы можем показать два списка, например, единственный список для отображения имени состояния, а другие списки покажут описание состояния в одном действии, но с помощью Activity мы не можем сделать то же самое.
  3. Activity не зависит от фрагмента. Но фрагмент зависит от Activity, он не может существовать независимо.
  4. без использования фрагмента в Activity мы не можем создать многопанельный интерфейс. но используя несколько фрагментов в одном действии, мы можем создать многопанельный интерфейс.
  5. Если мы создадим проект, используя только Activity, им будет сложно управлять, но если мы будем использовать фрагменты, тогда структура проекта будет хорошей, и мы сможем легко с этим справиться.
  6. Действие может содержать 0 или несколько фрагментов. Фрагмент можно повторно использовать в нескольких действиях, поэтому он действует как повторно используемый компонент в действиях.
  7. У активности есть собственный жизненный цикл, но у фрагмента есть свой жизненный цикл.
  8. Для Activity нам просто нужно упомянуть в Manifest, но для фрагмента это не требуется.
  9. Activity используется много памяти, а фрагмент не используется в памяти.
  10. Активность - это не легкий вес. Фрагмент облегченный.
Сиддхартха Шанкар
источник
Хорошее объяснение.
Abhishek kumar
Может кто-нибудь уточнить № 10. Что делает фрагмент более легким по сравнению с действием?
dazzieta
# 7 не имеет смысла: - \
t3chb0t
23

Согласно документации разработчика Android, разница между фрагментом и активностью в их жизненном цикле.

Ссылка на документ http://developer.android.com/guide/components/fragments.html#Lifecycle

Наиболее существенное различие в жизненном цикле между действием и фрагментом заключается в том, как он хранится в соответствующем заднем стеке. Действие по умолчанию помещается в задний стек действий, который управляется системой при остановке (чтобы пользователь мог вернуться к нему с помощью кнопки «Назад», как описано в разделах «Задачи и задний стек»). Однако фрагмент помещается в задний стек, управляемый активностью хоста, только когда вы явно запрашиваете сохранение экземпляра, вызывая addToBackStack () во время транзакции, которая удаляет фрагмент.

В остальном управление жизненным циклом фрагмента очень похоже на управление жизненным циклом действия. Таким образом, те же методы управления жизненным циклом активности применимы и к фрагментам. Однако вам также необходимо понять, как продолжительность действия влияет на жизнь фрагмента.

& для многопанельных макетов, fragmentкоторые вам не подходят activity.

Аджай С
источник
20

Действие - это пользовательский интерфейс приложения, через который пользователь может взаимодействовать, а Фрагмент - это часть действия, это вспомогательное действие внутри действия, которое имеет собственный жизненный цикл, который проходит параллельно с жизненным циклом действий.

Activity LifeCycle                           Fragment LifeCycle
onCreate()                                     onAttach()
    |                                              |
onStart()______onRestart()                     onCreate()
    |             |                                |
onResume()        |                            onCreateView()
    |             |                                |
onPause()         |                            onActivityCreated()
    |             |                                |
onStop()__________|                             onStart()
    |                                              |
onDestroy()                                    onResume()
                                                   |
                                                onPause()
                                                   |
                                                onStop()
                                                   |
                                              onDestroyView()
                                                   |
                                               onDestroy()
                                                   |
                                               onDetach()
Shubhamhackz
источник
5

Задание
1. Действия являются одним из основных строительных блоков приложений на платформе Android. Они служат точкой входа для взаимодействия пользователя с приложением, а также имеют центральное значение для того, как пользователь перемещается внутри приложения или между приложениями
2. Методы жизненного цикла размещаются в ОС.
3. Жизненный цикл деятельности

Фрагменты
1. Фрагмент представляет поведение или часть пользовательского интерфейса в Activity. Вы можете объединить несколько фрагментов в одном действии, чтобы создать многопанельный интерфейс и повторно использовать фрагмент в нескольких действиях. Вы можете думать о фрагменте как о модульном разделе действия, который имеет свой собственный жизненный цикл, получает собственные входные события и который вы можете добавлять или удалять во время выполнения действия.
2. Методы жизненного цикла размещаются на хостинге.
3. Жизненный цикл фрагмента

CubeRootX
источник