Advertisement

字节面试真题:说一下RecyclerView性能优化

阅读量:

字节跳动在四轮面试中,有三轮均涉及同一问题,现将相关内容进行归纳整理,旨在为各位提供参考,敬请查阅并补充完善。

数据处理和视图加载分离

可以明确的是,从远程获取数据的操作应当被安排在异步任务中执行。在数据成功获取后,通常会立即将其传递给 VH 进行处理,但事实上,数据的处理流程同样应当纳入异步机制之中。通过这种方式,当 Adapter 完成 notify change 操作后,ViewHolder 将能够更加高效且轻松地完成数据与视图之间的绑定操作,例如:

复制代码
    mTextView.setText(Html.fromHtml(data).toString())
    
    
      
    

在此情境下,Html.fromHtml(data) 这一操作可能成为性能瓶颈,尤其是在包含多个 TextView 的界面中,其执行时间将显著增加,进而导致界面渲染出现卡顿或掉帧现象。若将该处理过程与网络请求的异步线程相结合,从用户使用体验的角度来看,最多只会感受到网络内容加载速度略有延迟。

数据优化

通过分页方式从远程获取数据,并对获取到的数据进行缓存处理,从而加快后续数据的加载速度;针对新增或删除的数据,采用 DiffUtil 实现局部刷新,避免不必要的整体数据刷新操作。

布局优化

减少过渡绘制策略

为降低布

全部评论 (0)

还没有任何评论哟~