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

在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 的视图可能会被销毁和重建。


http://www.kler.cn/a/314037.html

相关文章:

  • neo4j desktop基本入门
  • 关于GCC内联汇编(也可以叫内嵌汇编)的简单学习
  • Spring Boot 中的全局异常处理器
  • 大厂的 404 页面都长啥样?看看你都见过吗~~~
  • C# 模拟浏览器自操作(自动化办公)
  • Linux如何更优质调节系统性能
  • 校园场景物体检测系统源码分享
  • Jboss Administration Console弱⼝令
  • macOS平台TensorFlow环境安装
  • 老程序员的数字游戏开发笔记(二) —— 直接开始一个Godot项目
  • SQLServer日期和时间类型
  • SpringCloud从零开始简单搭建 - JDK17
  • 基于python上门维修预约服务数据分析系统
  • Apache SeaTunnel Zeta引擎源码解析(三) Server端接收任务的执行流程
  • 【案例72】Apache检测到目标 URL 存在 http host 头攻击漏洞的解决方案
  • 如何安装1Panel面板并架设一个静态网站
  • Kubernetes从零到精通(11-CNI网络插件)
  • ppt组织结构图怎么增加分支?
  • 【python 类型注解详解】
  • 基于神经网络的光线追踪
  • 2024最新!!!iOS高级面试题,全!(一)
  • STM32(十五):I2C通信
  • PostgreSQL数据库怎么生成一个随机的UUID
  • K8S介绍+集群部署
  • Django视图:构建动态Web页面的核心技术
  • 伊犁职业技术学院linux 部署教学用首先创建两台linux 主机