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();
}
生命周期图: