当前位置: 首页 > news >正文

在Android中fragment的生命周期

目录

Fragment 生命周期主要包括以下几个阶段:

详细Kotlin代码和中文注释

生命周期解释:

总结:


在Android中,Fragment 的生命周期类似于 Activity,但有其独特之处。以下是 Fragment 生命周期的主要方法,并通过Kotlin代码进行详细的讲解。

Fragment 生命周期主要包括以下几个阶段:

  1. onAttach()
  2. onCreate()
  3. onCreateView()
  4. onViewCreated()
  5. onStart()
  6. onResume()
  7. onPause()
  8. onStop()
  9. onDestroyView()
  10. onDestroy()
  11. onDetach()

详细Kotlin代码和中文注释

class MyFragment : Fragment() {// Fragment被附加到Activity时调用override fun onAttach(context: Context) {super.onAttach(context)Log.d("FragmentLifecycle", "onAttach: Fragment附加到Activity")// 此时可以访问Activity的上下文}// Fragment创建时调用(此时Fragment与UI无关)override fun onCreate(savedInstanceState: Bundle?) {super.onCreate(savedInstanceState)Log.d("FragmentLifecycle", "onCreate: Fragment创建")// 用于初始化数据,例如恢复状态}// 创建Fragment的视图层次结构override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?,savedInstanceState: Bundle?): View? {Log.d("FragmentLifecycle", "onCreateView: 创建视图")// 这里通常是返回Fragment的UI布局return inflater.inflate(R.layout.fragment_layout, container, false)}// Fragment视图创建完成后调用(视图被完全创建后)override fun onViewCreated(view: View, savedInstanceState: Bundle?) {super.onViewCreated(view, savedInstanceState)Log.d("FragmentLifecycle", "onViewCreated: 视图创建完成")// 可以在这里与视图进行交互(例如设置按钮监听器)}// Fragment可见时调用override fun onStart() {super.onStart()Log.d("FragmentLifecycle", "onStart: Fragment开始")// 这里可以处理一些准备显示的数据}// Fragment进入前台并开始与用户交互时调用override fun onResume() {super.onResume()Log.d("FragmentLifecycle", "onResume: Fragment可交互")// 用户可以看到Fragment并开始交互}// Fragment不可交互时调用(进入后台或被遮挡)override fun onPause() {super.onPause()Log.d("FragmentLifecycle", "onPause: Fragment暂停")// 用于保存数据或停止耗时操作}// Fragment不可见时调用override fun onStop() {super.onStop()Log.d("FragmentLifecycle", "onStop: Fragment停止")// 停止所有与UI相关的操作,例如动画}// Fragment视图被销毁时调用override fun onDestroyView() {super.onDestroyView()Log.d("FragmentLifecycle", "onDestroyView: 视图销毁")// 清理与视图相关的资源}// Fragment被销毁时调用override fun onDestroy() {super.onDestroy()Log.d("FragmentLifecycle", "onDestroy: Fragment销毁")// 最后进行资源清理,例如取消网络请求}// Fragment与Activity解绑时调用override fun onDetach() {super.onDetach()Log.d("FragmentLifecycle", "onDetach: Fragment与Activity解绑")// Fragment完全与Activity分离}
}

生命周期解释:

  1. onAttach(): 当 Fragment 关联到 Activity 上时调用。此时可以访问 Activity 的上下文。
  2. onCreate(): Fragment 被创建时调用,适合在此进行一些初始化操作,但此时还没有绑定 UI。
  3. onCreateView(): 系统调用此方法来绘制 Fragment 的 UI。通过 inflater 创建并返回 Fragment 的视图层次结构。
  4. onViewCreated(): 视图已经创建完成并绑定到 Fragment,可以在这里初始化 UI 元素。
  5. onStart(): Fragment 对用户可见,但还没有与用户交互。
  6. onResume(): Fragment 进入前台并且可以与用户交互时调用。
  7. onPause(): Fragment 进入后台时调用,通常用于保存数据或者停止动画等操作。
  8. onStop(): Fragment 完全不可见时调用,可以用于释放与界面无关的资源。
  9. onDestroyView(): Fragment 的视图被销毁时调用,意味着与 UI 相关的资源可以被清理。
  10. onDestroy(): Fragment 自身即将被销毁时调用,用于进行最终的清理工作。
  11. onDetach(): FragmentActivity 解绑时调用,释放所有的引用。

总结:

Fragment 的生命周期非常类似于 Activity,但是它有自己特有的生命周期方法(如 onCreateView()onDestroyView()),因为 Fragment 的视图可能会被销毁和重建。

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 【多模态融合】【NeurIPS 2021】Attention Bottlenecks for Multimodal Fusion
  • 2025年国家级高新技术企业认定,这些公司过不了了!
  • leetcode 105.从前序与中序遍历序列构造二叉树
  • 创客中国AIGC专题赛冠军天鹜科技:AI蛋白质设计引领者
  • 掌握ChatGPT:高效利用AI助手
  • Spring Boot与gRPC的完美融合:构建高效用户服务与订单服务通信
  • 【网络安全】分享4个高危业务逻辑漏洞
  • 影刀RPE学习——自动化
  • 浅谈C#之AutoResetEvent和ManualResetEvent
  • 第k个排列 - 华为OD统一考试(E卷)
  • Java学习路线
  • 51单片机 - DS18B20实验1-读取温度
  • 浏览器指纹修改指南2024 - CommandLine(一)
  • 速盾:h5小游戏需要开cdn吗?
  • # windows 运行框输入mrt提示错误:Windows 找不到文件‘mrt‘。请确定文件名是否正确后,再试一次
  • “Material Design”设计规范在 ComponentOne For WinForm 的全新尝试!
  • CentOS 7 防火墙操作
  • CODING 缺陷管理功能正式开始公测
  • ES2017异步函数现已正式可用
  • javascript面向对象之创建对象
  • Redux系列x:源码分析
  • REST架构的思考
  • VirtualBox 安装过程中出现 Running VMs found 错误的解决过程
  • 工程优化暨babel升级小记
  • 解决jsp引用其他项目时出现的 cannot be resolved to a type错误
  • 看完九篇字体系列的文章,你还觉得我是在说字体?
  • 码农张的Bug人生 - 见面之礼
  • 模仿 Go Sort 排序接口实现的自定义排序
  • 嵌入式文件系统
  • 如何解决微信端直接跳WAP端
  • 《天龙八部3D》Unity技术方案揭秘
  • AI算硅基生命吗,为什么?
  • ​决定德拉瓦州地区版图的关键历史事件
  • ​一文看懂数据清洗:缺失值、异常值和重复值的处理
  • (bean配置类的注解开发)学习Spring的第十三天
  • (day18) leetcode 204.计数质数
  • (MIT博士)林达华老师-概率模型与计算机视觉”
  • (每日持续更新)信息系统项目管理(第四版)(高级项目管理)考试重点整理 第13章 项目资源管理(七)
  • (三)Honghu Cloud云架构一定时调度平台
  • (十八)用JAVA编写MP3解码器——迷你播放器
  • (一)搭建springboot+vue前后端分离项目--前端vue搭建
  • (转)Spring4.2.5+Hibernate4.3.11+Struts1.3.8集成方案一
  • (转)详解PHP处理密码的几种方式
  • (自用)仿写程序
  • .NET 实现 NTFS 文件系统的硬链接 mklink /J(Junction)
  • .NET 使用 ILRepack 合并多个程序集(替代 ILMerge),避免引入额外的依赖
  • .NET/C# 使窗口永不激活(No Activate 永不获得焦点)
  • .Net插件开发开源框架
  • .sh文件怎么运行_创建优化的Go镜像文件以及踩过的坑
  • .vimrc 配置项
  • /使用匿名内部类来复写Handler当中的handlerMessage()方法
  • @property python知乎_Python3基础之:property
  • [@Controller]4 详解@ModelAttribute
  • [20171101]rman to destination.txt
  • [AIGC] Nacos:一个简单 yet powerful 的配置中心和服务注册中心