Fragment(碎片)允许将Acitivity拆分成多个完全独立封装的可重用的组件,每个组件有它自己的生命周期和UI布局。

Fragemnt最大的优点就是你可以为不同频幕大小的设备创建动态灵活的布局。

 

Fragment生命周期事件处理程序:

 

//调用该方法时Fragment会被连接到它的父Activity上
 @Override
 public void onAttach(Activity activity) {
  super.onAttach(activity);
  //获取对父Activity的引用
 }
 
 //调用该方法来进行Fragment的初始创建
 @Override
 public void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  //初始化Fragment
 }
 
 //一旦Fragment已被创建,要创建它的用户界面时调用该方法
 @Override
 public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
  View inflate = inflater.inflate(R.layout.layout_myfragment, null);
  //找到对应的布局
  return inflate;
 }
 
 //一旦父Activity和Fragment的UI已被创建,则调用该方法
 @Override
 public void onActivityCreated(Bundle savedInstanceState) {
  super.onActivityCreated(savedInstanceState);
  //完成Fragment的初始化--尤其是那些父Acitivity被初始化完成后或者Fragment的View被完全填充后才能做的事情
 }
 
 //在可见生命周期的开始时被调用
 @Override
 public void onStart() {
  super.onStart();
  //现在Fragment是可见的
 }
 
 //在活动生命周期的开始时被调用
 @Override
 public void onResume() {
  super.onResume();
  //恢复所有暂停的Fragment需要的UI更新,线程或进程,但在非活动状态它是暂停的
 }
 
 //在活动生命周期的结束时被调用
 @Override
 public void onPause() {
  super.onPause();
  //当Activity不是活动的前台Activity时,需要暂停UI的更新、挂起线程或者暂停那些不需要更新的CPU的集中处理。由于
  //调用这个方法后,进程可能被终止,所以要保护所有的编辑和状态改变信息
 }
 
 //在活动生命周期结束时,调用该方法去保护UI的状态变化
 @Override
 public void onSaveInstanceState(Bundle outState) {
  super.onSaveInstanceState(outState);
  //将UI的状态改变信息保存到savedInstanceState中
  //这个Bundle会被传递到onCreate、onCreateView和OnActivityCrete(如果它的父Activity被终止并且重新启动)方法中
 }
 
 //在可见生命周期结束时调用该方法
 @Override
 public void onStop() {
  super.onStop();
  //当Fragment不可见时,暂停其余的UI更新、挂起线程或者暂停不再需要的处理
 }
 
 //当Fragment的View被分离时,调用该方法
 @Override
 public void onDestroyView() {
  super.onDestroyView();
  //清除资源相关的View
 }
 
 //在整个生命周期结束时调用该方法
 @Override
 public void onDestroy() {
  super.onDestroy();
  //清除所有的资源,包括结束线程和关闭数据库连接等
 }
 
 //当Fragment从它的父Activity上分离时,调用该方法
 @Override
 public void onDetach() {
  super.onDetach();
 }

 

生命周期图:

Fragment-初识_生命周期_Fragment