首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

七招教你优化Android滚动页面的性能

在我们的app中,以滚动列表方式呈现内容的页面在95%以上,主要的页面甚至在竖滑中嵌套了横(竖)滑。

如果在实现相关功能时不细心,随着业务的加深,列表上元素展示的改动,错误代码积少成多,就会加载缓慢,滑动卡顿,尤其是那些很旧的手机更是明显。

如果我们能保证滚动列表的流畅,那基本上就能保证app运行的流畅,下面把能优化的方面罗列一下,实际开发中酌情选用:

基本的还是布局优化,这里就不多说了,减少布局嵌套,简化布局实现,这个之前说过很多。

recyelerView 会有默认动画,如果可以,取消RecyclerView的默认动画,也可改善一些。

在某些页面,item的布局简单,如果固定高度,可大大介绍onMeasuer次数。尤其是GridLayout类型的布局。

RecycledViewPool viewHolder对象池,recyclerView默认会自动创建一个,如有需要,可考虑自定义缓存ViewHolder的个数。空间换时间。

优化滑动操作RecyclerView.addOnScrollListener()。在滑动中停止加载操作,例如图片加载相关,可以考虑在滑动结束后加载图片,这种一般不需要,只有在大量图片例如自定义选择照片页面时,用此方案会好一些。

adapter中的onCreateViewHolder和onBindViewHolder方法对时间敏感,这一点很容易被忽略。例如在其中使用SimpleDateFormat.format()格式化时间,这会造成大量的时间花费。尤其是我们在实际工作中,onBindViewHolder方法在UI线程执行,尽量只在里面做setText,setColor等操作,module的相关操作提前执行,不应该放在此处。比如下面的代码,不应该频繁创建对象,不应该处理时间相关逻辑,只需要setText,其它逻辑抽出。

如果只需要操作列表中的某个item,我们只需要更新某个item,而不用整个adapter去refresh,常见的业务场景:某种条件下触发了单个item的添加,刷新,移除。

前几天无意中用一个老手机发现划起来有点点卡,就查了下对应页面的相关代码,然后发现了一些之前开发过程中不好的写法,自查了下,还有不少地方也存在这些问题,顺手优化。

拖地先生,从事互联网技术工作,在这里每周两篇文章,一起聊聊日常的技术点滴和管理心得。

如果对你有帮助,让大家也看看呗~

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20191014A062AH00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券