同Activity的生命周期一樣边酒,F(xiàn)ragment也同樣擁有自己的生命周期狸窘,而且Fragment的生命周期與Activity的生命周期很相似墩朦。
onAttach():onAttach()在fragment與Activity關(guān)聯(lián)之后調(diào)用
onCreate():fragment初次創(chuàng)建時(shí)調(diào)用氓涣。盡管它看起來(lái)像是Activity的OnCreate()函數(shù),但這個(gè)只是用來(lái)創(chuàng)建Fragment的劳吠。此時(shí)的Activity還沒(méi)有創(chuàng)建完成,因?yàn)槲覀兊腇ragment也是Activity創(chuàng)建的一部分痒玩。所以如果你想在這里使用Activity中的一些資源,將會(huì)獲取不到。比如:獲取同一個(gè)Activity中其它Frament的控件實(shí)例蠢古。,如果想要獲得Activity相關(guān)聯(lián)的資源草讶,必須在onActivityCreated中獲取。
onCreateView:在這個(gè)fragment構(gòu)造它的用戶接口視圖(即布局)時(shí)調(diào)用脊框。在這里期望返回此Fragment的一個(gè)視圖層次結(jié)構(gòu)。使用LayoutInflater的inflater()方法來(lái)構(gòu)造視圖
onActivityCreated:在Activity的OnCreate()結(jié)束后浇雹,會(huì)調(diào)用此方法屿讽。所以到這里的時(shí)候,Activity已經(jīng)創(chuàng)建完成伐谈!在這個(gè)函數(shù)中才可以使用Activity的所有資源。
onStart:當(dāng)?shù)絆nStart()時(shí)抠蚣,F(xiàn)ragment對(duì)用戶就是可見(jiàn)的了。但用戶還未開(kāi)始與Fragment交互嘶窄。在生命周期中也可以看到Fragment的OnStart()過(guò)程與Activity的OnStart()過(guò)程是綁定的。意義即是一樣的距贷。以前你寫(xiě)在Activity的OnStart()中來(lái)處理的代碼,用Fragment來(lái)實(shí)現(xiàn)時(shí)现横,依然可以放在OnStart()中來(lái)處理阁最。
onResume:當(dāng)這個(gè)fragment對(duì)用戶可見(jiàn)并且正在運(yùn)行時(shí)調(diào)用。這是Fragment與用戶交互之前的最后一個(gè)回調(diào)姜盈。從生命周期對(duì)比中,可以看到,F(xiàn)ragment的OnResume與Activity的OnResume是相互綁定的,意義是一樣的饱亮。它依賴于包含它的activity的Activity.onResume舍沙。當(dāng)OnResume()結(jié)束后,就可以正式與用戶交互了拂铡。
onPause:此回調(diào)與Activity的OnPause()相綁定感帅,與Activity的OnPause()意義一樣。
onStop:這個(gè)回調(diào)與Activity的OnStop()相綁定岖是,意義一樣豺撑。已停止的Fragment可以直接返回到OnStart()回調(diào),然后調(diào)用OnResume()聪轿。
onDestroyView:如果Fragment即將被結(jié)束或保存猾浦,那么撤銷的下一個(gè)回調(diào)將是onDestoryView()。會(huì)將在onCreateView創(chuàng)建的視圖與這個(gè)fragment分離危号。下次這個(gè)fragment若要顯示素邪,那么將會(huì)創(chuàng)建新視圖。這會(huì)在onStop之后和onDestroy之前調(diào)用兔朦。
onDestroy:當(dāng)這個(gè)fragment不再使用時(shí)調(diào)用沽甥。需要注意的是,它即使經(jīng)過(guò)了onDestroy()階段亥曹,但仍然能從Activity中找到,因?yàn)樗€沒(méi)有Detach媳瞪。
onDetach:Fragment生命周期中最后一個(gè)回調(diào)是onDetach()。調(diào)用它以后句葵,F(xiàn)ragment就不再與Activity相綁定兢仰,它也不再擁有視圖層次結(jié)構(gòu),它的所有資源都將被釋放轻专。
Fragment的優(yōu)點(diǎn)
Fragment可以使你能夠?qū)ctivity分離成多個(gè)可重用的組件,每個(gè)都有它自己的生命周期和UI铭若。
Fragment可以輕松得創(chuàng)建動(dòng)態(tài)靈活的UI設(shè)計(jì)递览,可以適應(yīng)于不同的屏幕尺寸。從手機(jī)到平板電腦镜雨。
Fragment是一個(gè)獨(dú)立的模塊,緊緊地與activity綁定在一起儿捧。可以運(yùn)行中動(dòng)態(tài)地移除颓影、加入、交換等诡挂。
Fragment提供一個(gè)新的方式讓你在不同的安卓設(shè)備上統(tǒng)一你的UI临谱。
Fragment 解決Activity間的切換不流暢,輕量切換城豁。
Fragment 替代TabActivity做導(dǎo)航,性能更好唱星。
Fragment 在4.2.版本中新增嵌套fragmeng使用方法,能夠生成更好的界面效果间聊。
學(xué)術(shù)交流,相互學(xué)習(xí),共同進(jìn)步仑濒!
微信號(hào):romance-l