Является ли метод commit у FragmentManager синхронным

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

Ответ

Да, метод commit() у FragmentManager является асинхронным по умолчанию. Он добавляет транзакцию в очередь и выполняет её при первой возможности, но не сразу.

Если нужно синхронное выполнение, можно использовать commitNow() (доступен с API 24) или executePendingTransactions() для принудительного выполнения.

Пример:

supportFragmentManager.beginTransaction()
    .replace(R.id.container, MyFragment())
    .commitNow() // Синхронное выполнение

⚠️ commitNow() нельзя использовать после onSaveInstanceState(), иначе будет IllegalStateException.