《第一行程式碼Android》學習總結第四章 Fragment的執行狀態與生命週期
一、Fragment四種狀態
1、執行狀態
當一個Fragment是可見的,同時它所關聯的Activity正處於執行狀態,則該Fragment也處於執行狀態。
2、暫停狀態
當一個Activity處於暫停狀態,與它關聯的可見碎片就會處於暫停狀態。
3、停止狀態
Fragment不可見,有可能被系統回收。
1)當一個Activity處於停止狀態,與它關聯的可見碎片就會處於停止狀態。
2)通過呼叫FragmentTransaction的remove()、replace()方法將Fragment從活動中移除,但如果在事務提交之前呼叫addToBackStack()方法,此時Fragment也會進入停止狀態。
4、銷燬狀態
1)當一個Activity處於銷燬狀態,與它關聯的可見碎片就會處於銷燬狀態。
2)通過呼叫FragmentTransaction的remove()、replace()方法將Fragment從活動中移除,但如果在事務提交之前並沒有呼叫addToBackStack()方法,此時Fragment也會進入銷燬狀態。
二、Fragment的生命週期
onAttach():onAttach()回撥將在Fragment與其Activity繫結關聯之後呼叫。
onCreate():初始化Fragment
onCreateView():初始化Fragment的佈局,載入佈局和
onActivityCreated():onActivityCreated()回撥會在Activity完成其onCreate()回撥之後呼叫。
onStart():Fragment變為可見狀態。
onResume():執行該方法時,使用者可與之互動
onPause():暫停,可見但不能互動
onSaveInstanceState():儲存當前Fragment的狀態
onStop():執行該方法時,Fragment完全不可見。
onDestroyView():銷燬與Fragment有關的檢視,但未與
onDestroy():銷燬Fragment。通常按Back鍵退出或者Fragment被回收時呼叫此方法。
onDetach():解除與Activity的繫結。在onDestroy方法之後呼叫。
在碎片中同樣可以運用onSaveInstanceState()方法來儲存資料,因為在進入停止狀態的Fragment有可能在系統記憶體不足時被回收。儲存下來的Bundle型別的資料saveInstanceState在onCreate()、onCreateView()與onActivityCreated()三個方法中使用。
三、動態載入佈局的技巧
Android可以使用限定符讓程式根據裝置的解析度或螢幕大小在執行時來決定載入哪一個佈局。
1、layout資料夾中存在activity_main.xml佈局,同時在res目錄下建立layout-large資料夾,在該資料夾下新建另一個同名佈局activity_main.xml。
2、其中large為一個限定符,那些螢幕被認為large的裝置會自動載入layout-large資料夾下的佈局,而小螢幕仍會載入layout資料夾下的activity_main.xml佈局
Android中常見限定符:
最小寬度限定符:
允許對螢幕寬度指定一個最小值,以該最小值為臨界點,螢幕寬度大於該值的裝置載入一個佈局,螢幕寬度小於該值的裝置載入另一個佈局。
例:在res目錄下新建layout-sw600dp資料夾。