效果
老規(guī)矩,先來(lái)看看效果圖
沒(méi)錯(cuò),我又入坑了,又重新做了個(gè) Gank 客戶端,因?yàn)橹澳莻€(gè)代碼寫得太爛了,這次有好好的考慮了下架構(gòu)之類的事,代碼應(yīng)該會(huì)更容易讀懂了點(diǎn)了,吧。哈哈,再次歡迎來(lái) star 交流哈。
上面的截圖里有注釋解析了,稍微認(rèn)真點(diǎn)看看 log 的內(nèi)容哈,看看是不是你需要的需求。
Fragment懶加載
如果想直接看代碼,直接跳到最下面的代碼部分和使用介紹即可,如果感興趣,可以慢慢往下看看我的嘮叨。
之前寫過(guò)一篇 Fragment懶加載和ViewPager的坑,里面分析了 Fragment 結(jié)合 ViewPager 使用時(shí)會(huì)碰到的一些情況,以及為什么要用懶加載,如何用,感興趣的也可以再回去看看。
后來(lái)發(fā)現(xiàn),我在那篇博客里封裝的 Fragment 基類不足以滿足大家的懶加載需求,所以決定重新來(lái)封裝一次,這次封裝的支持以下的功能:
1.支持?jǐn)?shù)據(jù)的懶加載并且只加載一次
2.提供 Fragment 可見與不可見時(shí)回調(diào),支持你在這里進(jìn)行一些 ui 操作,如顯示/隱藏加載框
3.支持 view 的復(fù)用,防止與 ViewPager 使用時(shí)出現(xiàn)重復(fù)創(chuàng)建 view 的問(wèn)題
第一點(diǎn)應(yīng)該是比較需要且常用的一點(diǎn),之前那篇博客里沒(méi)有考慮到這點(diǎn)應(yīng)用場(chǎng)景是我的疏忽。稍微講解一下,有些時(shí)候,我們打開一個(gè) Fragment 頁(yè)面時(shí),希望它是在可見時(shí)才去加載數(shù)據(jù),也就是不要在后臺(tái)就開始加載數(shù)據(jù),而且,我們也希望加載數(shù)據(jù)的操作只是第一次打開該 Fragment 時(shí)才進(jìn)行的操作,以后如果再重新打開該 Fragment 的話,就不要再重復(fù)的去加載數(shù)據(jù)了。
具體點(diǎn)說(shuō),F(xiàn)ragment 和 ViewPager 一起用時(shí),由于 ViewPager 的緩存機(jī)制,在打開一個(gè) Fragment 時(shí),它旁邊的幾個(gè)