Fragment和Activity的生命周期 - 重加载数据不销毁?所谓的生命周期,并非类的生命周期。

博客探讨了在Android中Fragment和Activity的实际生命周期行为,特别是在切换和回退时的数据保存和销毁。作者通过实验发现,即使Fragment没有被销毁,onCreate仍可能被调用。问题源于在Fragment构造函数中初始化的数据,导致数据在切换后未被正确清除。解决方案是通过传递数据而不是在构造函数中创建,确保每次切换时Fragment状态正确。博客揭示了对Android生命周期和Java构造函数理解的重要性。
摘要由CSDN通过智能技术生成

前言

在学习了Fragment之后,就进行了项目实践,结果遇到了问题:
在进行Fragment的学习时,我的认知如下

onPause()或者onStop()方法调用后,如果系统内存不足,就会摧毁它。然后重新使用的时候会从onCreate开始重新实例化。
相应的,如果系统资源充足,就不会摧毁它,也不必重新实例化。

结果在项目实践中,我发现切换Fragment,明明资源没有被销毁,但是依然经历了onCreate过程。我感到非常的懵

参考资料
[译] 保存/恢复 Activity 和 Fragment 状态的最佳实践
Android Fragment 真正的完全解析 生命周期和简单使用
[Android Fragment 真正的完全解析 管理返回栈]

试验一

之前贴了一大堆log输出。算了,看不过来的。直接看结论。
试验代码在
机房电脑:D:\Android-project\SimpleTest
不懂了可以去再去比划比划

试验一总结

在这里插入图片描述

也就是:
Activity1fragment2在跳转activity2的过程中,不会调用onDestroy() onDestroyView()方法
activity2回退显示activity1的时候,显示的也是调用Activity1onRestart()方法和fragment的onStart()方法

但是fragment1fragment2的过程中是会全部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
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值