阅读文章大约需要10分钟

目录

1.背景
2.分析
3.优化
4.成果

背景


应用存在大量的列表和图片资源加载,如首页、喵圈、直播间广播、礼物面板等, 这些列表的性能对应用性能有着不少的影响。

分析

分析-列表架构VLayout

分析-RecycleView缓存机制

分析-RecycleView细节
1.默认会缓存当前显示的数量+ 2的view可设置大小,再是自定义缓存池,再是pool。
2.pool可以复用,不同type默认缓存5个,可以根据type设置缓冲池大小,pool缓存可以多个recycle共用。
3.pool缓存viewHodler,好处是复用不需要Create只需要bindView。减少itemView,也减少了glide图片资源的绑定。
4.从内存缓冲池拿不需要容易bind,从pool拿需要bind不需要create。
5.可以按type定义不同的卡片类型,有VLayout等开源二次封装框架。
6.recycle的layouManger负责布局view的控制,adapter负责view和数据绑定。
7.可以指定操作一个item,不需要全局刷新。
8.如果有固定尺寸可设置,减少测量,优化性能。

分析-Glide缓存机制

分析-Glide细节
1.with 方法会根据fragment、activity、context生成不同的RequestBulider对象,因此在with后控制pause和resume需注意,clear是获取view的tag复值的请求没有影响。
2.into方法会去clear view,然后去内存加载图片,activeCache-cache-磁盘缓存-网络加载-图片处理
3.如果xml没写死with、height会按最大值加载图片大小,需要在override时指定,否则会加载大尺寸图浪费资源。
4.trimMeory有2种,一种是调用clearMemory全部清空,一种是最大缓存值/2。
5.缓存是根据key不是view,key根据地址、签名、宽高等组合而成。
6.如果into请求和上一次一样,会直接return。
7.关闭页面时候,lifecycle会clear view,pasue request。
8.glide生命周期onTrimMeory,一个是释放内存,一个是停止请求。

优化

优化-目标

优化-图片资源内存释放

优化-图片资源内存释放


优化-滑动图片加载控制


优化-ViewHodler复用


优化原理

1.列表有一个缓存池,之前每个页面都有一个的缓存池,如果一个item在多个页面存在会存在多份缓存,改为多个页面一个缓存池,这样可以更节约的复用,减少资源。

2.列表滑动期间不加载图片,滑动停止的时候加载图片,提升滑动流畅度。

3.列表隐藏的部分主动去清除图片资源的绑定,新增应用内打开新页面触发首页内存缓存图片清理,因为还有磁盘缓存,不会再重新网络加载。

成果

优化后,内存和卡顿都得到了提升

成果展示(优化前内存)

成果展示(优化后内存)
成果展示(优化前卡顿)

成果展示(优化后卡顿)

Firebase上首页和瞄圈页面卡顿率数据,相比之前降低了2%

技术分享-应用列表性能优化相关推荐

  1. 秋色园QBlog技术原理解析:性能优化篇:用户和文章计数器方案(十七)

    2019独角兽企业重金招聘Python工程师标准>>> 上节概要: 上节 秋色园QBlog技术原理解析:性能优化篇:access的并发极限及分库分散并发方案(十六)  中, 介绍了 ...

  2. 秋色园QBlog技术原理解析:性能优化篇:数据库文章表分表及分库减压方案(十五)...

    文章回顾: 1: 秋色园QBlog技术原理解析:开篇:整体认识(一) --介绍整体文件夹和文件的作用 2: 秋色园QBlog技术原理解析:认识整站处理流程(二) --介绍秋色园业务处理流程 3: 秋色 ...

  3. 老李案例分享:Weblogic性能优化案例

    老李案例分享:Weblogic性能优化案例 POPTEST的测试技术交流qq群:450192312 网站应用首页大小在130K左右,在之前的测试过程中,其百用户并发的平均响应能力在6.5秒,性能优化后 ...

  4. 秋色园QBlog技术原理解析:性能优化篇:打印页面SQL,全局的SQL语句优化(十三)...

    文章回顾: 1: 秋色园QBlog技术原理解析:开篇:整体认识(一) --介绍整体文件夹和文件的作用 2: 秋色园QBlog技术原理解析:认识整站处理流程(二) --介绍秋色园业务处理流程 3: 秋色 ...

  5. 秋色园QBlog技术原理解析:性能优化篇:access的并发极限及超级分库分散并发方案(十六)...

    上节回顾: 上节 秋色园QBlog技术原理解析:性能优化篇:数据库文章表分表及分库减压方案(十五) 中, 介绍了 秋色园QBlog 在性能优化方面,从技术的优化手段,开始步入数据库设计优化,并从数据的 ...

  6. React项目实战之租房app项目(四)长列表性能优化城市选择模块渲染列表

    前言 目录 前言 一.长列表性能优化 1.1 概述 1.2 懒渲染 1.3 可视区渲染(React-virtualized) 二.react-virtualized组件 2.1 概述 2.2 基本使用 ...

  7. 【Maclean Liu技术分享】拨开Oracle优化器迷雾探究Histogram之秘

    [Maclean Liu技术分享]拨开Oracle CBO 优化器迷雾, 探究Histogram直方图之秘,讲座文档正式版已上传 http://t.askmaclean.com/thread-2172 ...

  8. 分享一个SQLite 性能优化实例

    本文给大家分享的是个人在实际项目中对于sqlite的一次优化的记录,非常简单实用,希望对大家学习sqlite能够有所帮助. 最早接触 iOS 开发了解到的第一个缓存数据库就是 SQLite,后面一直也 ...

  9. 技术分享|前端性能 关键性能指标以及测量工具介绍

    源宝导读:对于一款商业软件产品而言,其性能表现往往会直接关系到它的生死存亡,这种说法一点也不夸张,数据显示,40%的人放弃了加载时间超过3秒的网站.但是一个网页的加载时间,响应时间的"快&q ...

最新文章

  1. SQL Server数据库收缩日志的方法
  2. 10年开发经验大佬分享一个数据库系统知识图谱
  3. 连发10篇SCI!徐州二本学霸全奖直博香港城大引热议
  4. Angular学习(一):模板与数据绑定
  5. Navicat数据库备份还原
  6. 45度炸队Alpha冲刺博客集
  7. 常用SQL语句书写技巧-
  8. Spring事务TransactionProxyFactoryBean属性-transactionAttributes的意义
  9. 设置Elasticsearch N-Gram Word分析器的过程
  10. 简单的循环以及从接口获取数组对象的一个字段集合
  11. vector 不初始化时什么状态_Vue原理解析(三):初始化时created之前做了什么?...
  12. EVCache缓存在 Spring Boot中的实战
  13. 小程序 input 上传数据库
  14. php app 银联支付,php银联网页支付实现方法
  15. 填词作文:新的一年,新的梦想
  16. 一个月裂变50多万人?商城引流模式玩法——分享购
  17. 混沌麻雀搜索优化算法-附代码
  18. Docker - 搭建LNMP环境 - 学习/实践
  19. 如何在Outlook中单击邮件后立即将其标记为已读
  20. 利用Power Platform来搭建学校智能健康信息平台(2)

热门文章

  1. 中国工商银行成都市区营业网点分布一览表
  2. 微信恢复工具 MMRecovery 犹如一朵青莲
  3. VScode报错 过程试图写入的管道不存在。
  4. 计算机复试专业课面试问题锦集
  5. R语言log函数实战(log、log2、log10)
  6. 羽毛球拍15元,球3元,水2元。200元每种至少一个,有多少可能?
  7. plc编程实训QY-BC07
  8. 想学单片机,向ARM方向发展或者路由
  9. 实时获取端口号和ip地址(域名)
  10. 【endnote】解除endnote与word关联