Синхронный ли метод FragmentTransaction.commit()?

Нет, данный метод асинхронный. Вызов commit() не произведет транзакцию сразу после вызова. Вместо этого, он добавит транзакцию в очередь главного потока, ждать своего выполнения, и исполнит транзакцию как только подойдет ее очередь. Если необходимо исполнить транзакцию сразу, то можно использовать метод commitNow() и тогда транзакция выполнится на главном потоке сразу.

Стоит учитывать, что commitNow() не совместим с addToBackStack(). В качестве альтернативы, вы можете вызвать метод executePendingTransactions() сразу после вызовы commit(). Данный способ совместим с addToBackStack().

Но в реальной разработке редко встает необходимость запустить транзакцию синхронно, так что метода commit() вполне достаточно

Поделиться уроком

Ответить

Ваш адрес email не будет опубликован. Обязательные поля помечены *