Чем отличаются методы add и replace?

Отличие методов add и replace при работе с фрагментами заключается в следующем:

Короткий ответ

Что ответить на собеседовании

Отличие методов add и replace при работе с фрагментами заключается в следующем:

Подробный разбор

Ответ с пояснениями

Отличие методов add и replace при работе с фрагментами заключается в следующем:

  • add: Добавляет новый фрагмент поверх существующих. Предыдущие фрагменты остаются в бэкстеке (если был вызван addToBackStack) и их жизненный цикл приостанавливается (они переходят в состояние PAUSED).
  • replace: Удаляет предыдущий фрагмент из контейнера и добавляет новый на его место. Если предыдущий фрагмент находился в бэкстеке, при возврате он будет создан заново.

Пример использования add:

supportFragmentManager.beginTransaction()
    .add(R.id.fragment_container, NewFragment())
    .addToBackStack(null)
    .commit()

Пример использования replace:

supportFragmentManager.beginTransaction()
    .replace(R.id.fragment_container, NewFragment())
    .addToBackStack(null)
    .commit()

Основные отличия можно свести в таблицу:

Характеристика add replace
Видимость Новый фрагмент накладывается поверх Новый фрагмент заменяет предыдущий
Состояние пред. ф. Приостанавливается (PAUSED) Удаляется из контейнера, при возврате создается заново
Бэкстек Предыдущий фрагмент остается в бэкстеке Предыдущий фрагмент удаляется из контейнера, но может быть в бэкстеке
Производительность Может быть менее производительным при большом числе фрагментов Обычно более производительный при частой смене фрагментов

Практика в реальном времени

Подготовьтесь к следующему собеседованию

Interview Boost учитывает вакансию, резюме и технологии и помогает сформулировать ответ прямо во время интервью.

Начать подготовку