第126篇Fragment 事务与回退栈:add、replace、show、hide
先把结论放在前面:Fragment 事务是异步的、有队列的,回退栈是 FragmentManager 维护的一条独立记录,两者都不是"调用即生效"。show/hide不走销毁流程,切换快但视图状态与内存常驻;replace+addToBackStack走完整生命周期,能回退但每次都重建视图。选哪种,取决于是否需要回退和是否在乎内存——这是判断题,不是知识点。Fragment 事务与回退栈是高频考点,但答好的人不多。这篇带你从零理清它的原理、用法和坑。事务的机制:为什么 commit 后立刻找不到视图FragmentTransaction.commit()不会立刻执行,它只是把事务对象塞进FragmentManager.mPendingActions队列,真正的执行发生在FragmentManager的执行时机——通常是主线程消息循环的下一轮(FragmentManager通过Handler调度),或由commitNow()立刻同步执行。这个机制带来三个直接推论,答出来就是层次:①事务可以合并。连续多次add/hide会在一轮里一起执行,所以中间状态不会渲染出来,这也是为什么"批量改动要放进同一个