В элементе FragmentTransaction на Android docs описано, что метод replace() такой же, как вызов метода remove() для всех фрагменты, добавленные в текущий вид, а затем вызванные методом add(). В этом случае, чтобы восстановить предыдущий фрагмент, мы могли бы использовать addBackToStack(), это означает, что состояние транзакции все еще управляется менеджером фрагментов и будет отменять его операцию, когда мы выскочили из стека.
С другой стороны, когда мы реализуем транзакцию с использованием add(), помимо использования add().addBackToStack(), мы можем использовать метод detach() и восстанавливать фрагмент с помощью attach(), которые имеют такое же поведение, что addBackToStack().
Так в чем разница между сценами между этими сценариями?