Android技術(shù)棧(二)Fragment生命周期

Fragment生命周期流程圖

? ? ? ? Fragment是Android的視圖生命周期控制器,與Activity相比,它只占用更少的資源酱虎,并且提供更大的靈活性,兼容性等擂涛。即使是在性能較差的平臺上也能十分流暢的運(yùn)行读串,并且能將過渡動畫兼容到更低的版本。

????????現(xiàn)在的Fragment的功能已經(jīng)很強(qiáng)大了撒妈,足以在很多場合替代Activity的存在恢暖,安卓大神級開發(fā)者JakeWharton曾經(jīng)說過,一個App只需要一個Activity狰右,說的就是單Activity多Fragment模式杰捂。

一些有用的回調(diào)函數(shù),以及他們發(fā)生的時機(jī)

? ? ? ? 看到上面那張圖你可能都煩了棋蚌,不過其實(shí)不需要全部掌握嫁佳,了解部分即可挨队。

????????Activity因?yàn)楸容^簡單且網(wǎng)上的資料頗多我就不展開講了,而Fragment就比較操蛋蒿往,這里介紹一些Fragment的的回調(diào)函數(shù):

? ? ? ? 1.onInflate(Context,AttributeSet,Bundle)只有硬編碼在xml中的Fragment(即使用fragment標(biāo)簽)才會調(diào)用該方法盛垦,與自定義View十分類似,在實(shí)例化Xml布局時該方法會被調(diào)用

? ? ? ? 2.onAttach(Context):執(zhí)行該方法時瓤漏,F(xiàn)ragment與Activity已經(jīng)完成綁定情臭,該方法傳入一個Context對象,實(shí)際上就是該Fragment依附的Activity赌蔑,此時調(diào)用getActivity將不會返回null俯在,但是Activity#onCreate可能還有沒有執(zhí)行。

? ? ? ? 3.onCreate(Bundle):用來初始化Fragment娃惯□卫郑可通過參數(shù)savedInstanceState獲取之前保存的值。

? ? ? ? 4.onCreateView(LayoutInflater,ViewGroup,Bundle):需要返回一個View用來初始化Fragment的布局趾浅。默認(rèn)返回null愕提,值得注意的是,若返回null Fragment#onViewCreated將不會執(zhí)行皿哨。使用ViewPager+Fragment時此方法可能會被多次調(diào)用浅侨。

? ? ? ? 5.onActivityCreated(Bundle):執(zhí)行該方法時,與Fragment綁定的Activity的onCreate方法已經(jīng)執(zhí)行完成并返回证膨,若在此之前與Activity交互如输,若引用了未初始化的資源會應(yīng)發(fā)控制在異常。

? ? ? ? 6.onStart():執(zhí)行該方法時央勒,F(xiàn)ragment由不可見變?yōu)榭梢姞顟B(tài)不见。

? ? ? ? 7.onResume():執(zhí)行該方法時,F(xiàn)ragment處于活動狀態(tài)崔步,用戶可與之交互稳吮。

? ? ? ? 8.onPause():執(zhí)行該方法時,F(xiàn)ragment處于暫停狀態(tài)井濒,但依然可見灶似,用戶不能與之交互。

? ? ? ? 9.onSaveInstanceState(Bundle):保存當(dāng)前Fragment的狀態(tài)瑞你。該方法會自動保存Fragment的狀態(tài)酪惭,比如EditText鍵入的文本,即使Fragment被回收又重新創(chuàng)建捏悬,一樣能恢復(fù)EditText之前鍵入的文本撞蚕。

????????10.onStop():執(zhí)行該方法時润梯,F(xiàn)ragment完全不可見过牙。

? ? ? ? 11.onDestroyView():銷毀與Fragment有關(guān)的視圖甥厦,但未與Activity解除綁定,一般在這個回調(diào)里解除Fragment對視圖的引用寇钉。通常在ViewPager+Fragment的方式下會調(diào)用此方法刀疙,并且與Fragment#onCreateView一樣可能是多次的。

? ? ? ? 12.onDestroy():銷毀Fragment扫倡。通常按Back鍵退出或者Fragment被回收時調(diào)用此方法谦秧,此時應(yīng)該清理Fragment中所管理的所有數(shù)據(jù)。

? ? ? ? 13.onDetach():解除與Activity的綁定撵溃。在onDestroy方法之后調(diào)用疚鲤。若在此時getActivity,你將會得到一個null缘挑。

????????Fragment其實(shí)就是一個帶了生命周期的自定義ViewGroup集歇,由于有些場景跟生命周期密切相關(guān),可以使用Fragment语淘。但如果與生命周期相關(guān)程度不大诲宇,那么還是推薦使用自定義View來完成這部分工作,因?yàn)镕ragment還是比較重量級的惶翻,所有FragmentTransaction(碎片事務(wù))都是異步執(zhí)行的姑蓝,雖然他會保證在下一次VSYNC(下一幀渲染)前調(diào)用,但是還是會造成有一段時間你的UI不在你的控制之內(nèi)吕粗。

????????當(dāng)然纺荧,有限的控制手段當(dāng)然存在的,當(dāng)在提交碎片事務(wù)的時候還是允許你對他進(jìn)行一些控制颅筋,你可以嘗試使用FragmentTransaction#runOnCommit虐秋。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市垃沦,隨后出現(xiàn)的幾起案子客给,更是在濱河造成了極大的恐慌,老刑警劉巖肢簿,帶你破解...
    沈念sama閱讀 211,194評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件靶剑,死亡現(xiàn)場離奇詭異,居然都是意外死亡池充,警方通過查閱死者的電腦和手機(jī)桩引,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,058評論 2 385
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來收夸,“玉大人坑匠,你說我怎么就攤上這事∥韵В” “怎么了厘灼?”我有些...
    開封第一講書人閱讀 156,780評論 0 346
  • 文/不壞的土叔 我叫張陵夹纫,是天一觀的道長。 經(jīng)常有香客問我设凹,道長舰讹,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,388評論 1 283
  • 正文 為了忘掉前任闪朱,我火速辦了婚禮月匣,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘奋姿。我一直安慰自己锄开,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,430評論 5 384
  • 文/花漫 我一把揭開白布称诗。 她就那樣靜靜地躺著院刁,像睡著了一般。 火紅的嫁衣襯著肌膚如雪粪狼。 梳的紋絲不亂的頭發(fā)上退腥,一...
    開封第一講書人閱讀 49,764評論 1 290
  • 那天,我揣著相機(jī)與錄音再榄,去河邊找鬼狡刘。 笑死,一個胖子當(dāng)著我的面吹牛困鸥,可吹牛的內(nèi)容都是我干的嗅蔬。 我是一名探鬼主播,決...
    沈念sama閱讀 38,907評論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼疾就,長吁一口氣:“原來是場噩夢啊……” “哼澜术!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起猬腰,我...
    開封第一講書人閱讀 37,679評論 0 266
  • 序言:老撾萬榮一對情侶失蹤鸟废,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后姑荷,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體盒延,經(jīng)...
    沈念sama閱讀 44,122評論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,459評論 2 325
  • 正文 我和宋清朗相戀三年鼠冕,在試婚紗的時候發(fā)現(xiàn)自己被綠了添寺。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,605評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡懈费,死狀恐怖计露,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤票罐,帶...
    沈念sama閱讀 34,270評論 4 329
  • 正文 年R本政府宣布叉趣,位于F島的核電站,受9級特大地震影響胶坠,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜繁堡,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,867評論 3 312
  • 文/蒙蒙 一沈善、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧椭蹄,春花似錦闻牡、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,734評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至翼馆,卻和暖如春割以,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背应媚。 一陣腳步聲響...
    開封第一講書人閱讀 31,961評論 1 265
  • 我被黑心中介騙來泰國打工严沥, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人中姜。 一個月前我還...
    沈念sama閱讀 46,297評論 2 360
  • 正文 我出身青樓消玄,卻偏偏與公主長得像,于是被迫代替她去往敵國和親丢胚。 傳聞我的和親對象是個殘疾皇子翩瓜,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,472評論 2 348

推薦閱讀更多精彩內(nèi)容