自從Android在3.0推出Fragment之后,現(xiàn)在很多應(yīng)用的設(shè)計(jì)都是建立在Fragment的基礎(chǔ)上,像是多個tab切換這種需求,就可以使用Fragment,并且Fragment提供了一系列生命周期的回調(diào),可以幫助我們實(shí)現(xiàn)很多特殊的需求,像是數(shù)據(jù)保存和恢復(fù)等。
Fragment本身的出現(xià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)橐粋€Activity可以管理多個Fragment,如果將Fragment當(dāng)做一個界面,我們可以實(shí)現(xiàn)多個界面的切換,并且這種工作比起以前在布局文件中控制可見來講,更好管理,并且布局可以復(fù)用,導(dǎo)致Activity的作用就只是Fragment的管理容器而已,加上Fragment擁有和Activity同步的生命周期,所以很多業(yè)務(wù)工作都可以放在Fragment中。
現(xiàn)在很多界面的開發(fā)工作都是使用Activity加多個Fragment的設(shè)計(jì)模式,這是很好的方式,但要想完全掌握Fragment這個利器,需要了解的工作非常多,并且有關(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é)束的時候停止當(dāng)前異步任務(wù)等需求。
仔細(xì)看Fragment的代碼,我們發(fā)現(xiàn)這無非就是在Activity的布局中指定的地方添加相應(yīng)的布局,然后綁定一堆監(jiān)聽用以實(shí)現(xiàn)各種生命周期的回調(diào)。
我們甚至可以模擬Android源碼,自己搞一個Fragment的替代品。
我們這次的嘗試是實(shí)現(xiàn)Fragment界面復(fù)用的功能,這是最常用的場景。