前言
本文总结了在TV盒子端 使用RecycleView 实现局部更新的解决思路与方法,希望对你有所帮助。
1. 需求背景
Android在RecycleView中, 下载时item中的进度条不断更新时的处理方法。由于下载过程中,进度条会随着进度的不同而不断刷新界面,处理不好会引发程序卡顿或ANR。
2. 性能问题
TV端如果用notifyDatasetChanged()来刷新整个界面,下载刷新比较频繁的话,一量下载中的数量过多,性能极其低下,在TV端硬件盒子性能不佳的情况下,很容易引发ANR,会造成内存消耗和页面卡顿,出现焦点乱跑和操作无反应,用户体验极差。
3. 解决思路
采用局部更新,刷新某个item,再深入一点,局部刷新某个item中的某个控件,从而真正实现局部刷新,也不会出现界面闪烁的问题。
3.1 解决方案一
通过listview.getFirstVisiblePosition()方法获取到显示的item的首个位置 ,再根据position, 计算出view的位置。获取到具体的view后