Fragment生命周期

写这篇文章的目的仅仅是做个笔记,以供自己和大家参考。

先复习一下Activity的生命周期
Fragment生命周期_第1张图片
Paste_Image.png
1.Fragment介绍

Fragment当成Activity的一个界面的一个组成部分,甚至Activity的界面可以完全有不同的Fragment组成,更帅气的是Fragment拥有自己的生命周期和接收、处理用户的事件,这样就不必在Activity写一堆控件的事件处理的代码了。更为重要的是,你可以动态的添加、替换和移除某个Fragment。

2.Fragment的生命周期

Fragment必须是依存与Activity而存在的,因此Activity的生命周期会直接影响到Fragment的生命周期。网上很多图,我就不画了,直接上图,这张图很好的说明了Activity和Fragment生命周期的关系:

Fragment生命周期_第2张图片

方法说明

  • onAttach():当Fragment与Activity发生关联时调用
  • **onCreate() :创建fragment的时候回调他,在他里面实例化一些变量,这些个变量主要是:当你、暂停、停止的时候,你想保持的数据
  • onCreateView():绘制该Fragment的视图,返回一个View。因此不要在这个方法中做太多耗时的操作。由于每次Fragment进入后台后要调用onDestoryView()方法,再次进入前台时会再次调用onCreateView方法,此时可利用if语句进行一些变量初始化的判断,避免重复加载相同的UI,减少资源消耗
  • onActivityCreated():当Activity的onCreate方法执行完后会调用此方法
  • onStart():和Activity一致,Fragement启动时回调,此时Fragement可见
  • onResume():和Activity一致,在Activity中运行是可见的,Fragement 进入前台,可获取焦点时激活
  • onPause():和Activity一致,其他的Activity获得焦点,这个仍然可见。第一次调用的时候,指的是用户离开这个fragment(并不是被销毁)
  • onStop():和Activity一致,Fragment不可见。一个stopped的Fragment仍然是活着的如果长时间不用也会被移除
  • onDestoryView():当该Fragment的视图被移除时调用。销毁相关的UI布局,清除资源。此时需要注意,大家都用过ViewPager + Fragment,由于ViewPager的缓存机制,每次都会加载3页,那么这时就会遇到Fragment重复加载的问题。如果共有4页Fragment,当你滑到第4页时,第一页的Fragment就会调用onDestoryView()销毁UI,当界面再次回到第一页时会调用onCreateView()重新初始化UI
  • onDetach():与onAttach相对应,当Fragment与Activity关联被取消时调用
Fragment生命周期_第3张图片
熟悉一下整个流程

你可能感兴趣的:(Fragment生命周期)