浅析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相绑定,它也不再拥有视图结构,它的所有资源都将被释放