FragmentTransaction几个方法的区别
add/remove,其中add添加fragment并且显示,最后的生命周期方法是onResume,remove去除fragment,执行之后的生命周期方法。show/hide单纯的决定View显示还是隐藏,不执行生命周期方法。attach和detach,detach会执行onPause,onStop,onDestroyView,之后再attach会执行onCreateView,onViewCreated,onActivityCreated,onStart,onResume,所以这两个方法负责view的销毁和创建,但不影响onDestroy,onCreate,onAttach,onDetach。replace与add的区别,replace会自动地去掉其他的Fragment(相当于在附加在同一个View上的其他Fragment都执行一遍remove)
Fragment本质
本质就是对View添加了一些与Activity关联的生命周期方法。Activity通过FragmentController传递生命周期事件给Fragment,Fragment通过FragmentHostCallback来回调宿主,值得注意的是Fragment的宿主不必非是Activity,因为SystemUI的导航栏也使用了Fragment,可导航栏可不是一个Activity,SystemUI通过创建FragmentHostManager工具类来直接地将Fragment直接与View关联(仍然是通过FragmentController)。