首页 > 试题广场 >

ListView/RecyclerView什么情况下会卡顿,

[问答题]

ListView/RecyclerView什么情况下会卡顿,常用的优化手段有哪些?()

ListView在以下情况会有卡顿:
1,listview的多层嵌套,多次的onMessure导致卡顿
2.ADapter数据列表的整体刷新,而非单个受影响的数据刷新(notifySetDataChanged)
3.在getView方法里inflate的row 嵌套太深(布局过于复杂)或者是布局里面有大图片或者背景所致
4,在getView方法里ViewHolder初始化后的赋值或者是多个控件的显示状态和背景的显示没有优化好,抑或是里面含有复杂的计算和耗时操作
5,Adapter的getView方法里面convertView没有使用setTag和getTag方式

对于此,首先要减少层级,对改变的数据单独刷新,减少复杂计算和耗时操作优化图片素材。减少自适应尺寸的组件数量


RecycleView在以下情况会有卡顿:
1,RecyclerView层级较高
2.RecyclerView布局不等高,需要在绘制item时频繁计算
3.单次缓存资源较多
4.在onBindViewHolder/getView方法中,过多的逻辑判断,临时变量
5.数据列表的整体刷新,而非单个受影响的数据刷新

对于此,首先要减少层级,对改变的数据单独刷新,减少复杂计算和耗时操作优化图片素材。
对于不需要动态改变尺寸的item,设置为等高减少计算,
在onBindViewHolder/getView方法中,减少逻辑判断,减少临时对象创建
适当控制单次缓存数量

发表于 2019-10-23 20:38:31 回复(0)