自從Android 3.0中引入fragments 的概念,其目的是為了解決不同屏幕分辯率的動態(tài)和靈活UI設(shè)計。大屏幕如平板小屏幕如手機,平板電腦的設(shè)計使得其有更多的空間來放更多的UI組件,而多出來的空間存放UI使其會產(chǎn)生更多的交互,從而誕生了fragments 。
利州ssl適用于網(wǎng)站、小程序/APP、API接口等需要進行數(shù)據(jù)傳輸應(yīng)用場景,ssl證書未來市場廣闊!成為創(chuàng)新互聯(lián)的ssl證書銷售渠道,可以享受市場價格4-6折優(yōu)惠!如果有意向歡迎電話聯(lián)系或者加微信:13518219792(備注:SSL證書合作)期待與您的合作!
fragments 的設(shè)計不需要你來親自管理view hierarchy 的復(fù)雜變化,通過將Activity 的布局分散到frament 中,可以在運行時修改activity 的外觀,并且由activity 管理的back stack 中保存些變化。當一個片段指定了自身的布局時,它能和其他片段配置成不同的組合,在活動中為不同的屏幕尺寸修改布局配置(小屏幕可能每次顯示一個片段,而大屏幕則可以顯示兩個或更多)。
ITjob網(wǎng)有關(guān)于Android的文章和帖子,如果你想了解的更細致的話,可以自己去看看。也可以去相關(guān)的論壇,或者大牛的博客看看。希望對你有幫助。
Fragment必須總是被嵌入到一個activity之中,并且fragment的生命周期直接接受其宿主activity的生命周期的影響。你可以認為fragment是activity的一個模塊零件,它有自己的生命周期,接收它自己的輸入的事件,并且可以在activity運行時添加或者刪除。
應(yīng)該將每一個fragment設(shè)計為模塊化和可復(fù)用化的activity組件。也就是說,你可以在多個activity中引用同一個fragment,因為fragment定義了它自己的布局,并且使用它本身生命周期回調(diào)的行為。
Fragment比Activity多了幾個額外的生命周期回調(diào)方法:
管理fragment生命周期與管理activity生命周期很相像,像activity一樣,fragment也有三種狀態(tài):
1、Resumed:
fragment在運行中的activity中可見。
2、Paused:
另一個activity處于前臺且得到焦點,但是這個fragment所在的activtiy仍然可見(前臺activity部分透明,或者沒有覆蓋全屏)。
3、Stopped:
fragment不可見。要么宿主activity已經(jīng)停止,要么fragment已經(jīng)從activity上移除,但已被添加到后臺棧中。一個停止的fragment仍然活著(所有的狀態(tài)和成員信息仍然由系統(tǒng)保留著)。但是,它對于用戶來講已經(jīng)不再可見,并且如果activity被殺掉,它也將被殺掉。
如果activity的進程被殺掉了,在activity被重新創(chuàng)建時,你恢復(fù)fragment狀態(tài)??梢詧?zhí)行fragment的onSaveIntanceState()來保存狀態(tài)(注意:fragment是在onCreate(),onCreateView()或者onActivityCreate()中進行恢復(fù))。
在生命周期方面,activity和fragment之間一個很重要的不同就是在各自的后臺棧中是如何存儲的。當activity停止時,默認情況下activity被安置在由系統(tǒng)管理的activity后臺棧中;fragment僅當在一個事務(wù)被移除時,通過顯式調(diào)用addToBackStack()請求保存的實例,該fragment才被置于由宿主activity管理的后臺棧。
類似與Android系統(tǒng)為Activity維護一個任務(wù)棧,我們也可以通過Activity維護一個回退棧來保存每次Fragment事務(wù)發(fā)生的變化。
如果你將Fragment任務(wù)添加到回退棧,當用戶點擊后退按鈕時,將看到上一次的保存的Fragment。一旦Fragment完全從后退棧中彈出,用戶再次點擊后退鍵,則退出當前Activity。
通過Arguments創(chuàng)建Fragment,不建議通過為Fragment添加帶參數(shù)的構(gòu)造函數(shù)
1、FragmentPagerAdapter:對于不再需要的fragment,選擇調(diào)用detach方法,僅銷毀視圖,并不會銷毀fragment實例。
2、FragmentStatePagerAdapter:會銷毀不再需要的fragment,當當前事務(wù)提交以后,會徹底的將fragment從當前Activity的FragmentManager中移除。
3、懶加載,核心方法是 setUserVisibleHint()
原因1:橫豎屏切換,造成Fragment重新實例化。
原因2:按下Home鍵,Activity處于后臺,由于內(nèi)存不足被銷毀,重新喚醒時Fragment重新實例化。
注:出現(xiàn)的原因是在 API24 之前的 v4包 的源碼問題,
解決方案:通過檢查onCreate的參數(shù)Bundle savedInstanceState就可以判斷,當前是否發(fā)生Activity的重新創(chuàng)建:
默認的savedInstanceState會存儲一些數(shù)據(jù),只有在savedInstanceState==null時,才進行創(chuàng)建Fragment實例:
Fragment優(yōu)點
Fragment可以使你能夠?qū)ctivity分離成多個可重用的組件,每個都有它自己的生命周期和UI。
Fragment可以輕松得創(chuàng)建動態(tài)靈活的UI設(shè)計,可以適應(yīng)于不同的屏幕尺寸。從手機到平板電腦。
Fragment是一個獨立的模塊,緊緊地與activity綁定在一起??梢赃\行中動態(tài)地移除、加入、交換等。
Fragment提供一個新的方式讓你在不同的安卓設(shè)備上統(tǒng)一你的UI。
Fragment 解決Activity間的切換不流暢,輕量切換。
Fragment 替代TabActivity做導航,性能更好。
Fragment 在4.2.版本中新增嵌套fragment使用方法,能夠生成更好的界面效果。
Fragment做局部內(nèi)容更新更方便,原來為了到達這一點要把多個布局放到一個activity里面,現(xiàn)在可以用多Fragment來代替,只有在需要的時候才加載Fragment,提高性能。
可以從startActivityForResult中接收到返回結(jié)果,但是View不能。
反正我是沒有看到fragment有什么缺點(可能是我程度沒達到),再說它(fragment)就是一個api而已感覺不好就用activity就ok了。
frgment被創(chuàng)建的時候,相關(guān)的生命周期,
onAttach(), onCreate(), onCreateView(), onActivityCreated();
fragment對用戶可見的時候,相關(guān)的生命周期,
onStrat(), onResume(),
fragment進入“后臺模式”的時候,相關(guān)的生命周期,
onPause(), onStop(),
fragment被銷毀的時候,相關(guān)的生命周期,
onPause(), onStop(), onDestroyView(), onDestroy(), onDetach()
可用onCreate()、onCreateView()、onActivityCreated()方法Bundle對象保存一個fragment的對象
onAttach():Fragment和Activity相關(guān)聯(lián)時調(diào)用,可以通過該方法獲取Activity引用,還可以通過getArguments()獲取參數(shù)。
onCreate():Fragment創(chuàng)建時被調(diào)用。
onCreateView():創(chuàng)建Fragment的布局。
onActivityCreated():當Activity完成onCreate時調(diào)用。
onStart():當Fragment可見時。
onResume():當Fragment可見,且可交互時調(diào)用。
onPause():當Fragment不可交互,但可見時。
onStop():當Fragment不可見時。
onDestroyView():當Fragment的UI從視圖結(jié)構(gòu)中移除時調(diào)用。
onDestroy():銷毀Fragment時
onDetach():當Fragment和Activity解除關(guān)聯(lián)時調(diào)用。
分享標題:androidfragment,android fragment和activity的區(qū)別
文章位置:http://aaarwkj.com/article6/dsiedog.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供微信公眾號、網(wǎng)站設(shè)計公司、商城網(wǎng)站、動態(tài)網(wǎng)站、網(wǎng)站改版、靜態(tài)網(wǎng)站
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)