Активность против жизненного цикла фрагментов

Я работаю над новым приложением, где я использую Activity и Fragment . Любое главное различие между ними?

Обновить

Я нашел хороший ответ, который я хотел в документах для Android.

Документы описаны

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

Имеет ли Activity хоста другой задний стек с другим Fragment связанным с ним, и любой сценарий, в котором ваше одно приложение хранит несколько стеков. ??

  Differences between Activity and Fragment lifecyle in Android 

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

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

Фрагмент не может существовать независимо. Он всегда должен быть частью деятельности. Где, поскольку деятельность может существовать без какого-либо фрагмента.

Жизненный цикл фрагмента более сложный, чем жизненный цикл активности, поскольку он имеет больше состояний. Состояние жизненного цикла показано ниже:

Введите описание изображения здесь

onInflate

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

onAttach

После этого вызывается onAttach. Этот метод называется, как только фрагмент «привязан» к активности «отца», и мы можем этот метод сохранить ссылку на активность.

OnCreate

Это один из самых важных шагов, наш фрагмент находится в процессе создания. Этот метод можно использовать для запуска некоторого потока для получения информации о данных, возможно, с удаленного сервера. OnCreateView – это метод, называемый, когда фрагмент должен создавать свою иерархию представлений. Во время этого метода мы раздуем наш макет внутри фрагмента.

На этом этапе мы не можем быть уверены, что наша деятельность все еще создана, поэтому мы не можем рассчитывать на нее для какой-либо операции. Мы получаем уведомление, когда деятельность «отец» создается и готова в onActivityCreated .

С этого момента наша деятельность активна и создана, и мы можем ее использовать, когда нам это нужно.

OnStart

Следующий шаг – метод onStart . Здесь мы делаем общие вещи, как в деятельности onStart, на этом этапе наш фрагмент виден, но он еще не взаимодействует с пользователем.

onResume

Когда фрагмент готов к взаимодействию с пользователем onResume, вызывается.

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

После этого может случиться так, что ОС решает уничтожить наш фрагмент, и поэтому вызывается onDestroyView . После этого, если система решает отклонить наш фрагмент, он вызывает методDestroy .

Здесь мы должны освободить все активное соединение и т. Д., Потому что наш фрагмент близок к смерти. Даже если он находится во время фазы уничтожения, он все еще привязан к деятельности отца. Последний шаг – отделить фрагмент от активности, и это происходит, когда вызывается onDetach .

Надеюсь, вы поймете это.

Благодарю.

Непосредственно от разработчика Fragments guide

Жизненный цикл активности, в котором живет фрагмент, напрямую влияет на жизненный цикл фрагмента, так что каждый обратный вызов жизненного цикла для активности приводит к аналогичному обратному вызову для каждого фрагмента.

Например, когда активность получает onPause() , каждый фрагмент в активности получает onPause() .

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

1) onAttach () =>

Вызывается, когда фрагмент связан с активностью (здесь передается действие).

2) onCreateView () =>

Вызывается для создания иерархии представления, связанной с фрагментом.

3) onActivityCreated () =>

Вызывается, когда возвращается метод onCreate ().

4) onDestroyView () =>

Вызывается, когда иерархия представления, связанная с фрагментом, удаляется.

5) onDetach () =>

Вызывается, когда фрагмент отделяется от активности.

Когда activity достигнет возобновленного состояния, вы можете свободно добавлять и удалять fragments для этой activity . Таким образом, только когда активность находится в состоянии возобновления, жизненный цикл фрагмента изменяется независимо.

Однако, когда activity покидает возобновленное состояние, fragment снова подвергается activity .

Проверьте активность и фрагменты .

Это похоже в одном смысле. Оба получают свой жизненный цикл, пока они не существуют на экране. Если ваша деятельность закрыта, она будет остановлена ​​и уничтожена позже. Аналогично, фрагменты уничтожаются, если они больше не доступны в scree. Но поскольку фрагменты живут внутри действия, ее вероятность того, что фрагменты будут уничтожены всякий раз, когда какой-либо другой фрагмент заменяет этот фрагмент. Таким образом, он владеет подобным, но отличным жизненным циклом.