浅析Fragment的生命周期

浅析Fragment的生命周期

一、onAttach()

onAttach()在Fragment与Activity关联之后被调用。需要注意的是,初始化Fragment参数可以从getArguments()获得,但当Fragment附加到Activity之后,就无法再调用setArguments(),所以除了在最开始时,其它时间都无法向初始化参数添加内容

二、onCreate()

onCreate()在Fagment初次创建时调用。尽管它看起来像是Activity的OnCreate()函数,但这个只是用来创建Fragment的。此时的Activity还没有创建完成,因为我们的Fragment也是Activity创建的一部分。所以如果你想在这里使用Activity中的一些资源,将会获取不到。如果想要获得Activity相关联的资源,必须在onActivityCreated中获取。从生命周期对比中,可以看到,Fragment的onCreate()与Activity的onCreate()是相互绑定的

三、onCreateView()

onCreateView()在创建Fragment布局时调用

四、onViewCreated()

onViewCreated()在Fragment布局被创建后调用

五、onActivityCreated()

onActivityCreated()在Activity的onStart()结束后,会调用此方法。所以到这里的时候,Activity已经创建完成(其实此时的Activity已经由不可见变为后台可见,只是不能与用户进行交互)!在这个函数中可以使用Activity的所有资源

六、onStart()

onStart()在启动Fragment时调用。此时Fragment对用户就是可见的,但用户还未开始与Fragment交互。在生命周期中也可以看Fragment的onStart()过程与Activity的onStart()过程是绑定的

七、onResume()

onResume()在Fragment对用户可见并且可与用户交互时调用。从生命周期对比中,可以看到,Fragment的onResume()与Activity的onResume()是相互绑定的

八、onPause()

onPause()当Fragment可见但不能与用户交互时调用。此方法调用后会紧接着调用onStop()。从生命周期对比中,可以看到,Fragment的onPause()与Activity的onPause()是相互绑定的。用户按HOME键或BACK键都可以引起此情况

九、onStop()

onStop()当Fragment不可见时调用。从生命周期对比中,可以看到,Fragment的onStop()与Activity的onStop()是相互绑定的

十、onDestroyView()

onDestroyView()当Fragment从视图结构中移除时调用(只是移除视图,并没有销毁Fragment和脱离Activity

十一、onDestroy()

onDestroy()在Fragment被销毁时调用。从生命周期对比中,可以看到,Fragment的onDestroy()与Activity的onDestroy()是相互绑定的

十二、onDetach()

onDetach()在Fragment与Activity解除关联时调用。调用它以后,Fragment就不再与Activity相绑定,它也不再拥有视图结构,它的所有资源都将被释放

十三、Fragment与Activity生命周期对比图

浅析Fragment的生命周期

十四、Fragment生命周期图

浅析Fragment的生命周期