Fragment的生命周期及其与activity的关系如上图所示,下面分别对每个回调进行中文注释,如下所示:
- onAttach:当fragment第一次添加到activity时调用,onCreate(bundle)将在这后面执行。
- onCreate:fragment初次创建时调用。这会在onAttach和onCreateView之间执行。需要注意的是这个方法能在这个fragment的activity正在被created的时候调用。也就是说,你不能指望它就像activity在这个位置一样被初始化。如果你想一旦在activity被创建完成后做某些事,参见onActivityCreated方法。
- onCreateView:在这个fragment构造它的用户接口视图(即布局)时调用。这条是可选的,对于没有布局的fragments这项将返回null。这个方法会在onCreate与onActivityCreated之间被调用。
- onActivityCreated:当这个fragment的activity已经创建完成,并且这个fragment的视图树已经构造完成后调用。一旦这部分完成,就可以进行最终的初始化操作。这个方法对使用setRetainInstance来维护fragment的实例的来说也是有用的,因为当这个fragment完全同它的activity关联之后这个回调会通知fragment。例如获取视图或还原状态。这将在onCreateView之后和onViewStateRestored之前调用。
- onStart:当这个fragment对用户可见时调用。通常它依赖于包含它的activity的Activity.onStart。
- onResume:当这个fragment对用户可见并且正在运行时调用。通常它依赖于包含它的activity的Activity.onResume。
- onPause:当这个fragment不再resumed时调用。通常它依赖于包含它的activity的Activity.onPause。
- onStop:当这个fragment不再started时调用。通常它依赖于包含它的activity的Activity.onStop。
- onDestroyView:当由onCreateView上一次创建的视图从这个fragment分离时调用。下次这个fragment若要显示,那么将会创建新视图。这会在onStop之后和onDestroy之前调用。这个方法的调用同onCreateView是否返回非null视图无关。它会潜在的在这个视图状态被保存之后以及它被它的父视图回收之前调用。
- onDestroy:当这个fragment不再使用时调用。这会在onStop之后onDetach之前调用。
- onDetach:当这个fragment不再attach到它的activity时调用。这将在onDestroy之后调用。