完整的Fragment的生命周期是:
onAttach() --> onCreate() --> onCreateView() --> onActivityCreated() -->
onStart() --> onResume() --> onPause() --> onStop() -->
onDestroyView() --> onDestroy() --> onDetach()
onStart() --> onResume() --> onPause() --> onStop() -->
onDestroyView() --> onDestroy() --> onDetach()
如图: Activity的生命周期 和 Fragment的生命周期 的对比
启动Fragment时,经过的生命周期函数:
onAttach() --> onCreate() --> onCreateView() --> onActivityCreated() --> onStart() --> onResume()
当锁屏时,Fragment消失,经过的生命周期函数:
onPause() --> onStop()
当屏幕解锁时,Fragment又出现,经过的生命周期函数是:
onStart() --> onResume()
当从一个Fragment上切换到另一个Fragment时的生命周期变化是:
第一个Fragmrnt经历的生命周期是 :
onPause() --> onStop() --> onDestroyView() --> onDestroy() --> onDetach()
第二个Fragment经历的生命周期是:
onAttach() --> onCreate() --> onCreateView() --> onActivityCreated() --> onStart() --> onResume()
Fragment的生命周期中的各个函数的含义:
public class MyFragment extends Fragment {
//当Fragment被添加到Activity时,会调用该方法,并且该方法只会被调用一次
public void onAttach(Activity activity) {
super.onAttach(activity);
}
//在创建Fragment时,调用该方法,该方法也是只调用一次
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
}
//每次创建时,绘制Fragment的组件时,调用该方法
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.layout_fragment, null);
return view;
}
//当Fragment所在的Activity启动完成后,调用该方法
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
}
//
public void onStart() {
super.onStart();
}
@Override
public void onResume() {
super.onResume();
}
@Override
public void onPause() {
super.onPause();
}
@Override
public void onStop() {
super.onStop();
}
//销毁Fragment所包含的View组件时,调用
public void onDestroyView() {
super.onDestroyView();
}
//销毁Fragment时调用
public void onDestroy() {
super.onDestroy();
}
//当最后Fragment从Activity中删除时,会调用,并且该方法也是只会调用一次
public void onDetach() {
super.onDetach();
}
}