内容如题,对于recyclerview复用,各个开发者都有自己的见解。
而本次实战中,就是因为复用,导致的一个性能问题。
场景还原
recyclerview里面有个textview控件,textview使用了setspan方法设置了图片。然后滑动了累计几十个有图片的item后,应用卡死崩溃了。查看日志发现,到后面每次有新的图片进行setspan的时候,就会进行一个累加,到十几个以后,就累加了一次需要加载十几个图片。
带着这个问题,观察思考。
最后发现是textview的recyclerview回收的时候,里面的span内容没有进行回收导致的。使用一下代码可以解决问题。
onBindViewHolder中,调用textview的
getEditable.clearspan()
getEditable.clear()
setText(null)
即可解决问题。原理是在每次加载的时候,都先清空textview原来的缓存信息,然后再更新数据。
that's all------------------------------------------------------------------------------------