這種布局蝙昙,RecyclerView(Vertical)不會復(fù)用闪萄,內(nèi)容多幾屏,Crash必現(xiàn)奇颠。
這是一段心路歷程~
線上低端機(jī)因為OOM大面積Crash~
新功能初期败去,將原來的RN修改為Native代碼,數(shù)據(jù)流分類不同烈拒,每個分類也沒多少數(shù)據(jù)圆裕,和大部分的App首頁布局差不多。
開始是使用一個RecyclerView直接實現(xiàn)的缺菌,但是效果并不理想葫辐,滑動卡頓,定位問題是Banner頻繁回收伴郁,損耗過重耿战,導(dǎo)致卡頓。
后來為了實現(xiàn)業(yè)務(wù)焊傅,用NestedScrollView嵌套幾個不用復(fù)用的布局剂陡,下面的列表用RecyclerView實現(xiàn)的(數(shù)據(jù)量不大,就沒做分頁)狐胎。
這個版本上線之后鸭栖,可想而知,Buggly上報低端機(jī)出現(xiàn)個別的Crash握巢,也不是很在意晕鹊,畢竟低端手機(jī)的適配工作并沒有被重視起來,雖然公司都是學(xué)生群體暴浦,但是現(xiàn)在的低端機(jī)真的沒多少呀溅话。
近期,業(yè)務(wù)組同學(xué)直接加了6個分組歌焦,也就是18張書籍封面圖飞几,結(jié)果可想而知,線上中低端機(jī)全線Crash独撇。自己挖的坑必須自己跳呀~~
下面就是定位問題屑墨。當(dāng)時在做的時候用一個RecyclerView就是為了實現(xiàn)復(fù)用,防止內(nèi)存Crash纷铣,后面為了實現(xiàn)效果卵史,也沒有深究,畢竟我用的RecyclerView(捂臉哭)关炼。
· 第一反應(yīng)程腹,內(nèi)容同學(xué)又傳了大圖了(代碼不可能有Bug),找了半天儒拂,有些小問題寸潦,但不是主要問題色鸳。
· 第二反應(yīng),是否可以繼續(xù)壓縮圖片質(zhì)量~
· 第三反應(yīng)见转,log 看 首頁渲染邏輯
最終發(fā)現(xiàn)命雀,本應(yīng)該回收復(fù)用的RecyclerView只初始化了第一次,后面再也沒有重寫渲染了斩箫。So吏砂,才反應(yīng)過來,我寫的什么鬼代碼~~
那么問題來了乘客,網(wǎng)上NestedScrollView嵌套RecyclerView的需求以及解決滑動沖突的問題一大堆狐血,那么為什么會存在這種需求呢,有沒有考慮后續(xù)內(nèi)容增加呢易核,即使加了分頁匈织,是否解決了復(fù)用問題呢?感覺我陷入了死胡同牡直,為什么大家都在用這種設(shè)計~~
最后:使用HeadView的方式實現(xiàn)了上面的需求缀匕,實現(xiàn)了復(fù)用(HeaderView不會重新創(chuàng)建)。