內(nèi)容如題,對于recyclerview復(fù)用,各個(gè)開發(fā)者都有自己的見解。
而本次實(shí)戰(zhàn)中,就是因?yàn)閺?fù)用,導(dǎo)致的一個(gè)性能問題。
場景還原
recyclerview里面有個(gè)textview控件,textview使用了setspan方法設(shè)置了圖片。然后滑動(dòng)了累計(jì)幾十個(gè)有圖片的item后,應(yīng)用卡死崩潰了。查看日志發(fā)現(xiàn),到后面每次有新的圖片進(jìn)行setspan的時(shí)候,就會(huì)進(jìn)行一個(gè)累加,到十幾個(gè)以后,就累加了一次需要加載十幾個(gè)圖片。
帶著這個(gè)問題,觀察思考。
最后發(fā)現(xiàn)是textview的recyclerview回收的時(shí)候,里面的span內(nèi)容沒有進(jìn)行回收導(dǎo)致的。使用一下代碼可以解決問題。
onBindViewHolder中,調(diào)用textview的
getEditable.clearspan()
getEditable.clear()
setText(null)
即可解決問題。原理是在每次加載的時(shí)候,都先清空textview原來的緩存信息,然后再更新數(shù)據(jù)。
that's all------------------------------------------------------------------------------------