Сразу ли добавляется Fragment после вызова add у FragmentManager

«Сразу ли добавляется Fragment после вызова add у FragmentManager» — вопрос из категории Android компоненты, который задают на 23% собеседований Android Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Нет, добавление фрагмента через add() не происходит мгновенно. Фрагмент добавляется в очередь транзакции, и изменения применяются только после вызова commit() и выполнения транзакции на основном потоке.

Важно:

  • commit() не выполняет транзакцию сразу, а ставит её в очередь
  • Для немедленного выполнения можно использовать commitNow(), но с ограничениями (нельзя добавить транзакцию в back stack)
  • Жизненный цикл фрагмента начнётся только после выполнения транзакции

Пример:

supportFragmentManager.beginTransaction()
    .add(R.id.container, MyFragment())
    .commit() // транзакция будет выполнена при следующем цикле UI