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