Зачем нужны транзакции во фрагментах

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

Ответ

Транзакции во фрагментах позволяют группировать несколько операций (добавление, замена, удаление) в одну атомарную операцию, что обеспечивает плавные анимации и предотвращает "мерцание" UI. Используются через FragmentManager.beginTransaction().

Пример:

supportFragmentManager.beginTransaction()
    .replace(R.id.container, MyFragment())
    .addToBackStack("my_fragment")
    .setTransition(FragmentTransaction.TRANSIT_FRAGMENT_OPEN)
    .commit()

Ключевые моменты:

  • addToBackStack() - сохраняет транзакцию в стек для навигации назад
  • commit() выполняет транзакцию асинхронно (для синхронного - commitNow())
  • Можно комбинировать несколько операций в одной транзакции