前言
在学习了Fragment之后,就进行了项目实践,结果遇到了问题:
在进行Fragment的学习时,我的认知如下
onPause()或者onStop()方法调用后,如果系统内存不足,就会摧毁它。然后重新使用的时候会从onCreate开始重新实例化。
相应的,如果系统资源充足,就不会摧毁它,也不必重新实例化。
结果在项目实践中,我发现切换Fragment,明明资源没有被销毁,但是依然经历了onCreate过程。我感到非常的懵
参考资料
[译] 保存/恢复 Activity 和 Fragment 状态的最佳实践
Android Fragment 真正的完全解析 生命周期和简单使用
[Android Fragment 真正的完全解析 管理返回栈]
试验一
之前贴了一大堆log输出。算了,看不过来的。直接看结论。
试验代码在
机房电脑:D:\Android-project\SimpleTest
不懂了可以去再去比划比划
试验一总结
也就是:
Activity1
,fragment2
在跳转activity2
的过程中,不会调用onDestroy() onDestroyView()
方法
activity2
回退显示activity1
的时候,显示的也是调用Activity1
的onRestart()
方法和fragment的onStart()
方法
但是fragment1
到fragment2
的过程中是会全部destory的。
结论
调用哪些生命周期和它是否出栈有关。
出栈就全销毁。不出栈就到stop()
方法为止,并且回退会恢复数据
实践问题
为什么啊?为什么明明Fragment
做了Destory()
,Fragment
中的ArrayList
却没有被清除?
05-16 16:18:04.830 8832-8832/? D/FolderListFragment: onCreate:
05-16 16:18:04.831 8832-8832/? D/FolderListFragment: onCreateView:
05-16 16:18:04