自從Android在3.0推出Fragment之后,現(xiàn)在很多應(yīng)用的設(shè)計(jì)都是建立在Fragment的基礎(chǔ)上,像是多個(gè)tab切換這種需求,就可以使用Fragment,并且Fragment提供了一系列生命周期的回調(diào),可以幫助我們實(shí)現(xiàn)很多特殊的需求,像是數(shù)據(jù)保存和恢復(fù)等。
Fragment本身的出現(xiàn)是為了解決平板多屏界面展示問(wèn)題,因?yàn)槠桨蹇梢哉故颈仁謾C(jī)更多的內(nèi)容,所以使用Fragment可以實(shí)現(xiàn)根據(jù)不同尺寸展示不同內(nèi)容的需求,而這不同內(nèi)容更多是指在更大的尺寸顯示更多的內(nèi)容。
隨著人們的實(shí)際編碼工作,發(fā)現(xiàn)使用Fragment可以更好的管理界面,因?yàn)橐粋€(gè)Activity可以管理多個(gè)Fragment,如果將Fragment當(dāng)做一個(gè)界面,我們可以實(shí)現(xiàn)多個(gè)界面的切換,并且這種工作比起以前在布局文件中控制可見(jiàn)來(lái)講,更好管理,并且布局可以復(fù)用,導(dǎo)致Activity的作用就只是Fragment的管理容器而已,加上Fragment擁有和Activity同步的生命周期,所以很多業(yè)務(wù)工作都可以放在Fragment中。
現(xiàn)在很多界面的開發(fā)工作都是使用Activity加多個(gè)Fragment的設(shè)計(jì)模式,這是很好的方式,但要想完全掌握Fragment這個(gè)利器,需要了解的工作非常多,并且有關(guān)Fragment可以開展相當(dāng)多的話題,像是Fragment之間的參數(shù)傳遞,F(xiàn)ragment之間的切換和狀態(tài)的保存,等等,這些都是相當(dāng)大的范圍,而且谷歌也看到Fragment的使用前景,封裝了DialogFrament,ListFragment等方便開發(fā)者使用,F(xiàn)ragment和Activity之間生命周期的關(guān)系,還可以做監(jiān)聽Activity生命周期實(shí)現(xiàn)某些功能,像是結(jié)束的時(shí)候停止當(dāng)前異步任務(wù)等需求。
仔細(xì)看Fragment的代碼,我們發(fā)現(xiàn)這無(wú)非就是在Activity的布局中指定的地方添加相應(yīng)的布局,然后綁定一堆監(jiān)聽用以實(shí)現(xiàn)各種生命周期的回調(diào)。
我們甚至可以模擬Android源碼,自己搞一個(gè)Fragment的替代品。
我們這次的嘗試是實(shí)現(xiàn)Fragment界面復(fù)用的功能,這是最常用的場(chǎng)景。
延伸閱讀
- ssh框架 2016-09-30
- 阿里移動(dòng)安全 [無(wú)線安全]玩轉(zhuǎn)無(wú)線電——不安全的藍(lán)牙鎖 2017-07-26
- 消息隊(duì)列NetMQ 原理分析4-Socket、Session、Option和Pipe 2024-03-26
- Selective Search for Object Recognition 論文筆記【圖片目標(biāo)分割】 2017-07-26
- 詞向量-LRWE模型-更好地識(shí)別反義詞同義詞 2017-07-26
- 從棧不平衡問(wèn)題 理解 calling convention 2017-07-26
- php imagemagick 處理 圖片剪切、壓縮、合并、插入文本、背景色透明 2017-07-26
- Swift實(shí)現(xiàn)JSON轉(zhuǎn)Model - HandyJSON使用講解 2017-07-26
- 阿里移動(dòng)安全 Android端惡意鎖屏勒索應(yīng)用分析 2017-07-26
- 集合結(jié)合數(shù)據(jù)結(jié)構(gòu)來(lái)看看(二) 2017-07-26