技术分享-应用列表性能优化
阅读文章大约需要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%
技术分享-应用列表性能优化相关推荐
- 秋色园QBlog技术原理解析:性能优化篇:用户和文章计数器方案(十七)
2019独角兽企业重金招聘Python工程师标准>>> 上节概要: 上节 秋色园QBlog技术原理解析:性能优化篇:access的并发极限及分库分散并发方案(十六) 中, 介绍了 ...
- 秋色园QBlog技术原理解析:性能优化篇:数据库文章表分表及分库减压方案(十五)...
文章回顾: 1: 秋色园QBlog技术原理解析:开篇:整体认识(一) --介绍整体文件夹和文件的作用 2: 秋色园QBlog技术原理解析:认识整站处理流程(二) --介绍秋色园业务处理流程 3: 秋色 ...
- 老李案例分享:Weblogic性能优化案例
老李案例分享:Weblogic性能优化案例 POPTEST的测试技术交流qq群:450192312 网站应用首页大小在130K左右,在之前的测试过程中,其百用户并发的平均响应能力在6.5秒,性能优化后 ...
- 秋色园QBlog技术原理解析:性能优化篇:打印页面SQL,全局的SQL语句优化(十三)...
文章回顾: 1: 秋色园QBlog技术原理解析:开篇:整体认识(一) --介绍整体文件夹和文件的作用 2: 秋色园QBlog技术原理解析:认识整站处理流程(二) --介绍秋色园业务处理流程 3: 秋色 ...
- 秋色园QBlog技术原理解析:性能优化篇:access的并发极限及超级分库分散并发方案(十六)...
上节回顾: 上节 秋色园QBlog技术原理解析:性能优化篇:数据库文章表分表及分库减压方案(十五) 中, 介绍了 秋色园QBlog 在性能优化方面,从技术的优化手段,开始步入数据库设计优化,并从数据的 ...
- React项目实战之租房app项目(四)长列表性能优化城市选择模块渲染列表
前言 目录 前言 一.长列表性能优化 1.1 概述 1.2 懒渲染 1.3 可视区渲染(React-virtualized) 二.react-virtualized组件 2.1 概述 2.2 基本使用 ...
- 【Maclean Liu技术分享】拨开Oracle优化器迷雾探究Histogram之秘
[Maclean Liu技术分享]拨开Oracle CBO 优化器迷雾, 探究Histogram直方图之秘,讲座文档正式版已上传 http://t.askmaclean.com/thread-2172 ...
- 分享一个SQLite 性能优化实例
本文给大家分享的是个人在实际项目中对于sqlite的一次优化的记录,非常简单实用,希望对大家学习sqlite能够有所帮助. 最早接触 iOS 开发了解到的第一个缓存数据库就是 SQLite,后面一直也 ...
- 技术分享|前端性能 关键性能指标以及测量工具介绍
源宝导读:对于一款商业软件产品而言,其性能表现往往会直接关系到它的生死存亡,这种说法一点也不夸张,数据显示,40%的人放弃了加载时间超过3秒的网站.但是一个网页的加载时间,响应时间的"快&q ...
最新文章
- SQL Server数据库收缩日志的方法
- 10年开发经验大佬分享一个数据库系统知识图谱
- 连发10篇SCI!徐州二本学霸全奖直博香港城大引热议
- Angular学习(一):模板与数据绑定
- Navicat数据库备份还原
- 45度炸队Alpha冲刺博客集
- 常用SQL语句书写技巧-
- Spring事务TransactionProxyFactoryBean属性-transactionAttributes的意义
- 设置Elasticsearch N-Gram Word分析器的过程
- 简单的循环以及从接口获取数组对象的一个字段集合
- vector 不初始化时什么状态_Vue原理解析(三):初始化时created之前做了什么?...
- EVCache缓存在 Spring Boot中的实战
- 小程序 input 上传数据库
- php app 银联支付,php银联网页支付实现方法
- 填词作文:新的一年,新的梦想
- 一个月裂变50多万人?商城引流模式玩法——分享购
- 混沌麻雀搜索优化算法-附代码
- Docker - 搭建LNMP环境 - 学习/实践
- 如何在Outlook中单击邮件后立即将其标记为已读
- 利用Power Platform来搭建学校智能健康信息平台(2)