Fragment的生命周期

Fragment的生命周期

Fragment主要用于将Activity的UI界面划分成多个可复用的部分,这样可以使App的UI界面更容易适应多种不同屏幕分辨率的设备。

Fragment作为可复用的组件,有独立的生命周期,但同时作为Activity的一部分,其生命周期也会受其所属Activity的生命周期的影响。

Fragment的生命周期如下图所示:

Fragment的生命周期与其所属Activity的生命周期之间的关系如下图所示:

onAttach

  • Fragment被加入Activity时回调

onCreate

  • Fragment被创建时回调,此方法中通常对一些需要持久化的成员进行初始化。

onCreateView

  • Fragment在此方法中初始化UI组件,该方法返回一个View对象,作为该Fragment的UI界面的根组件。

onActivityCreated

  • 当Fragment所属Activity的onCreate方法执行完成时回调此方法。

要注意的是, 执行前三个方法时,Fragment所属Activity可能尚未执行完onCreate方法,因此不能在这三个方法中依赖使用Activity的成员。

onStart

  • 类似Activity的onStart方法,Fragment即将转入前台变成可见状态。

onResume

  • 类似Activity的onResume方法,Fragment已经变成可见的状态,并获得用户焦点。

onPause

  • 类似Activity的onPause方法,其他Fragment将转入前台替代此Fragment,或者Fragment所属的Activity即将被其他Activity所替代。

onStop

  • 类似Activity的onStop方法,Fragment变成不可见状态,其他Fragment替代了此Fragment或者其所属的Activity变成完全不可见的状态。

Fragment的onStart方法到onStop方法与Activity的同名方法紧密相关,当Activity调用这些方法时,其包含的所有Fragment都会调用相对应的同名方法。

onDestroyView

  • 当Fragment被从所属Activity中移走或者被其他Fragment替代时,系统调用此方法清理在onCreateView方法中创建的UI资源。

onDestroy

  • Fragment的资源即将被系统回收,该Fragment将彻底消亡。

如果在删除或替换此Fragment之前,调用了addToBackStack方法将Transaction加入transaction栈,则执行完onDestroyView之后系统不会执行onDestroy。

onDetach

  • Fragment从所属Activity中移除完成后调用。



只有当Fragment所属Activity进入Resumed状态,即执行完onResume方法之后,Fragment才可以自由反复地从其所属Activity中被移除或者被替换,才能独立进行生命周期的演变。

原文地址:https://www.cnblogs.com/jqctop1/p/5456704.html