浅谈RecyclerView性能问题 滑动卡顿 界面闪动

来源:互联网 发布:知之深爱之切电子书 编辑:程序博客网 时间:2024/05/16 10:22
在RecyclerView控件出来之后大多数android developer开始使用这个控件,但是有些时候我们经常会发现这个控件并不像我们想的那个样子,比如果性能吊炸天啊,滑动如丝滑般顺畅啊等等,这个时候我们应该分析是什么原因导致的这种情况,从而避免这类事情发生,一下是本人在开发中遇到的一些问题,踩到的一些坑,现在分享给大家,前车之鉴后事之师,希望能帮助一些遇到此问题的人。

第一:滑动时候布局闪动

这个是令人抓狂的事情,用list的无非为了流畅,item复用,节省内存,但是当用完之后出现滑动闪动,心累。于是找问题,首先想到以前一个需求,列表中有一个view加载h5。webview作为item置于RecyclerView中时候滑动时webview内部的图片闪的厉害(大量图片,抓包看了下有的一张图片几十兆),后来百度得到的答案是在manifest文件中,对应的activity加入<android:hardwareAccelerated="true" >启用硬件加速,后来试了下shit,这是什么鬼啊,Webview虽然不闪了,但是这也太卡了吧,滑动时候感觉要爆炸。后来跟后台协商,限制图片个数,硬件加速去掉,正常加载。因此,个人感觉硬件加速这玩意慎用,一般的app大多数地方根本用不到在acticity上面强制开启。

第二:滑动时候界面卡顿

这个更恶心,本来原有界面用h5加载,就是应为体验不好,所以换成原生, 然而做出来后突然发现还没有h5的效果好,这可是让人蛋疼的事情。因此又苦逼的分析问题。布局没什么问题,后来发现问题出现在分割线上面。设计图上面item之间有分割线,但是RecyclerView并没有像listview那样设置分割线的功能。因此参考鸿阳大神的添加分割线的方法(http://blog.csdn.net/lmj623565791/article/details/45059587),但是遇到问题就是多布局的情况下,会发生卡顿,单一布局时候没有这种问题。解决方案:不使用自定义的方法添加分割线,而是把分割线添加到item里面,完美,流畅运行。同时也建议Google对RecyclerView进行优化,增加分割线方法。

有问题去解决,总归RecyclerView依然是非常棒的控件,值得去学习,使用。比如局部刷新,插入,加载,删除等,当然还有自带动画,总之来说6的一批。
遇到问题得善于去分析照成问题的原因,然后找到病根方能治愈。

//大家有什么问题可以留言,一起学习交流。

阅读全文
0 0