从fragment-A切换到fragment-B,再从fragment-B切换到fragment-A中。跟踪发现,切换回到fragment-A后,fragment-A的实例变量的值不会被重置,保持和上次相同,但是fragment-A的life cycle方法被重新调用。
第1次创建fragment时,生命周期方法调用顺序是:
切换到其他fragment时,查看日志
再从其他fragment切换回来,查看日志
从日志中可以发现,在切换到其他fragment时,并没有调用onDestroy方法,再从其他fragment切换回来时,也没有再次调用onCreate方法。由此可以说明,在fragment来回切换过程中,fragment并没有销毁,所以也没有重新创建,只是按照fragment的设计约定执行了一些生命周期方法。
既然这样,那么在切换回到OrderVideoFragment时,实例变量保存着原来的值就不难理解了,我们在切换回来之后,就可以利用保存在变量中的值来恢复fragment原来的界面。例如在OrderVideoFragment中,第1次创建时要从网络加载数据,那在后来切换回来就可以利用上次从网络加载的数据。
以下说明一下OrderVideoFragment类中的重要代码片段和重要方法
1. 重写onCreateView方法,创建fragment界面(界面其实表现为View组件)。
2. 重新onStart方法。在onStart方法中加载数据。
3. 实现加载数据方法。
4. 加载数据要分两种情况:
(1)从实例变量中加载数据。
(2)从网络加载数据。
5. 根据加载到的数据构建View界面。