天天看点

跟踪fragment来回切换过程

从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界面。

继续阅读