fragment生命周期

简介: fragment生命周期

Fragment每个生命周期方法的意义、作用(注意红色的不是生命周期方法):


  • setUserVisibleHint():设置Fragment可见或者不可见时会调用此方法。在该方法里面可以通过调用getUserVisibleHint()获得Fragment的状态是可见还是不可见的,如果可见则进行懒加载操作。
  • onAttach():执行该方法时,Fragment与Activity已经完成绑定,该方法有一个Activity类型的参数,代表绑定的Activity,这时候你可以执行诸如mActivity = activity的操作。
  • onCreate():初始化Fragment。可通过参数savedInstanceState获取之前保存的值。
  • onCreateView():初始化Fragment的布局。加载布局和findViewById的操作通常在此函数内完成,但是不建议执行耗时的操作,比如读取数据库数据列表。
  • onActivityCreated():执行该方法时,与Fragment绑定的Activity的onCreate方法已经执行完成并返回,在该方法内可以进行与Activity交互的UI操作,所以在该方法之前Activity的onCreate方法并未执行完成,如果提前进行交互操作,会引发空指针异常。
  • onStart():执行该方法时,Fragment由不可见变为可见状态。
  • onResume():执行该方法时,Fragment处于活动状态,用户可与之交互。
  • onPause():执行该方法时,Fragment处于暂停状态,但依然可见,用户不能与之交互。
  • onSaveInstanceState():保存当前Fragment的状态。该方法会自动保存Fragment的状态,比如EditText键入的文本,即使Fragment被回收又重新创建,一样能恢复EditText之前键入的文本。
  • onStop():执行该方法时,Fragment完全不可见。
  • onDestroyView():销毁与Fragment有关的视图,但未与Activity解除绑定,依然可以通过onCreateView方法重新创建视图。通常在ViewPager+Fragment的方式下会调用此方法。
  • onDestroy():销毁Fragment。通常按Back键退出或者Fragment被回收时调用此方法。
  • onDetach():解除与Activity的绑定。在onDestroy方法之后调用。


Fragment生命周期执行流程(注意红色的不是生命周期方法):


  • Fragment创建:setUserVisibleHint()->onAttach()->onCreate()->onCreateView()->onActivityCreated()->onStart()->onResume();
  • Fragment变为不可见状态(锁屏、回到桌面、被Activity完全覆盖):onPause()->onSaveInstanceState()->onStop();
  • Fragment变为部分可见状态(打开Dialog样式的Activity):onPause()->onSaveInstanceState();
  • Fragment由不可见变为活动状态:onStart()->OnResume();
  • Fragment由部分可见变为活动状态:onResume();
  • 退出应用:onPause()->onStop()->onDestroyView()->onDestroy()->onDetach()(注意退出不会调用onSaveInstanceState方法,因为是人为退出,没有必要再保存数据);
  • Fragment被回收又重新创建:被回收执行onPause()->onSaveInstanceState()->onStop()->onDestroyView()->onDestroy()->onDetach(),重新创建执行onAttach()->onCreate()->onCreateView()->onActivityCreated()->onStart()->onResume()->setUserVisibleHint();
  • 横竖屏切换:与Fragment被回收又重新创建一样。


官方生命周期图

image.png

相关文章
|
安全 Android开发
你是否了解 RxJava 的 Disposable ?
你是否了解 RxJava 的 Disposable ?
394 0
|
开发工具 Android开发 数据安全/隐私保护
Cocos Creator Android 平台 Facebook 原生登录(一)
Cocos Creator Android 平台 Facebook 原生登录
844 0
|
Android开发
Android 状态栏WiFi图标的显示逻辑
Android 状态栏WiFi图标的显示逻辑
650 0
|
算法 vr&ar 计算机视觉
数据结构之洪水填充算法(DFS)
洪水填充算法是一种基于深度优先搜索(DFS)的图像处理技术,主要用于区域填充和图像分割。通过递归或栈的方式探索图像中的连通区域并进行颜色替换。本文介绍了算法的基本原理、数据结构设计(如链表和栈)、核心代码实现及应用实例,展示了算法在图像编辑等领域的高效性和灵活性。同时,文中也讨论了算法的优缺点,如实现简单但可能存在堆栈溢出的风险等。
619 0
|
机器学习/深度学习 人工智能 自然语言处理
claude3.5官网入口 - Claude3.5 Sonnet国内使用教程
在这个信息爆炸的时代 💥,我们每天都被海量的数据和信息包围 🌊。如何高效地处理信息、获取知识、提升效率,成为了现代人面临的巨大挑战 💪
|
JSON Java 数据格式
如何用String字符串生成JSONObject和JSONArray数据
如何用String字符串生成JSONObject和JSONArray数据
3599 1
|
XML Java Android开发
Android Studio App开发之通知推送Notification的讲解及实战(给用户推送信息实战)
Android Studio App开发之通知推送Notification的讲解及实战(给用户推送信息实战)
1751 0
|
Android开发
Android SystemUI去掉拖动亮度条QSPanel界面隐藏功能
Android SystemUI去掉拖动亮度条QSPanel界面隐藏功能
362 0
|
XML 测试技术 API
【Android开发日常】一文弄懂桌面图标快捷菜单 & 桌面小组件
开发可以定义快捷方式,以便在应用中执行特定操作。 这些快捷方式可在受支持的启动器或助理(如 Google 助理)中显示,方便用户快速启动应用中的常见任务或推荐任务。 通过本文你还将了解一些可提升快捷方式效果的最佳做法。
2073 1
|
Shell 测试技术 Android开发
Android自动化压力测试图解教程——Monkey工具
引用:http://www.eoeandroid.com/blog-115192-2540.html  有时候我们需要对一个软件进行压力测试,检查该软件的性能。如果是人工进行测试的话,效率会低很多,而且会比较枯燥。
2287 0
Android自动化压力测试图解教程——Monkey工具