首先,我们要明白,Fragment要跳转,肯定是有多个Fragment,也要明白它是依赖于Activity的存在而存在的,当然,还要明白它的生命周期:onAttach->onCreate->onCreateView->onActivityCreated->onStart->onResume->onPause->onStop->onDestroyView->onDestroy->onDeath
那么,假如有4个Fragment要来回切换,暂且说成A、B、C、D。
一、刚开始你的 A、B、C、D不可能一下子全都缓存出来。当用户打开 A ,A 与 B 便都被缓存出来。它们的生命周期便是:A先执行:onAttach->onCreate->onCreateView->onActivityCreated->onStart->onResume,B再执行:onAttach->onCreate->onCreateView->onActivityCreated->onStart->onResume
二、当用户从 A 切换到 B 时,C 又被缓存了出来,A 与 B 不消失。它们的生命周期便是 A 与 B 不动,C执行:onAttach->onCreate->onCreateView->onActivityCreated->onStart->onResume
三、当用户从 B 切换到 C 时,A 先被杀掉,然后再将 D 缓存出来。它们的生命周期是:A 先执行:onPause->onStop->onDestroyView->onDestroy->onDeath,D再执行:onAttach->onCreate->onCreateView->onActivityCreated->onStart->onResume
四、当用户从 C 切换到 D 时,B被杀掉,C 不动。它们的生命周期是:B 执行:onPause->onStop->onDestroyView->onDestroy->onDeath
简单来说,也就是Fragment总是缓存用户可以看到的,与当前Fragment的前一个与后一个Fragment。