iOS 列表掉帧调查方法以及解决方案

直播广场卡顿测试

单元模块排除法找出引起掉帧的主要因素

场景:

1、往下拉

2、往上(回)拉

前提:注释播放器play和stop逻辑;注释起播加速;

1、注释topview所有组件,只留下bottomview

测试滑动效果:

往下滑动时,仍然会掉帧

网上滑动,不掉帧

结论:

1、可能商品图片加载引起掉帧

2、加载新数据引起掉帧

进一步测试:注释商品图片加载代码

测试滑动效果:

往下滑动加载新数据,还是会有些许掉帧 ------ 加载新数据有可能存在阻塞主线程的方法

往上滑动不掉帧

2、 放出_introView(图片和渐变背景先隐藏)

测试滑动效果:

往下滑动,加载新数据有些掉帧;

往上滑动,基本不掉帧;再次往下滑动,也基本不掉帧了;

3、 放出tagview(lottie先隐藏)

测试滑动效果:同上

4、 放出tagview的lottie

说明:

1、 lottie的url从config server取的,初始化控件的时候取一次

2、 lottie的创建(调用框架的方法,异步获取, 并开启了缓存(降级场景只能取到静态图?))

测试滑动效果:同上

5、 放出_introView的渐变背景

测试滑动效果:同上

6、 释放封面图预加载代码

测试滑动效果:同上; 感觉往下加载新数据时,卡顿更严重一些,等分析加载新数据卡顿原因时再进一步分析;

7、 释放goodsview图片

测试滑动效果:同上;

8、 释放_introView图片加载

测试滑动效果:

往下加载新数据会掉帧;

往上滑动也出现了偶尔掉帧;

9、重新隐藏_introView图片加载再测试一遍

测试滑动效果:往回拉时基本不掉帧。

得出结论:同时只显示一张图片时,往回拉基本不掉帧。增加一张图片往回拉出现掉帧。

10、只加载封面图,隐藏其他图片加载

测试滑动效果:同2

11、释放_introView图片加载

测试滑动效果:掉帧不明显

12、释放goodsview图片加载

测试滑动效果:往回掉帧

13、goods和intro的图片都预加载

Goods预加载前224b -> 预加载 14b

Intro预加载前104b -> 预加载 8b

问题:预加载两次,调查一下原因

接下来,逐步分析加载新数据掉帧原因

方法:从日志台打印的关键日志入手,找到往回拉和往下拉日志差别;找到了didTriggerPaging方法;从这个方法入手终于揪出了两个主线程耗时方法

1、addCardInstances 耗时20多ms

2、preHandleCardInstances 平均耗时4~6ms

记得看下预览的cell是否有离屏渲染问题

相关推荐
美狐美颜SDK开放平台4 小时前
直播APP平台搭建需要哪些技术?视频美颜SDK只是其中一环
android·ios·音视频·直播美颜sdk·视频美颜sdk
小π军5 小时前
安卓、iOS、鸿蒙三端的理解
android·ios·harmonyos
终端安全笔记6 小时前
声明式之后,怎么证明更新策略真的生效了
ios·iphone
茶底世界之下7 小时前
瀑布的白色需要压住吗?用 Awaking 检查高光调整的边界
ios
TheLittleBoy7 小时前
iOS 27支持的设备列表
macos·ios·cocoa·ios 27
智能相对论7 小时前
STEPX Neo:AI终端的“初代iPhone时刻”
人工智能·ios·iphone
茶底世界之下1 天前
灯塔照片怎么裁竖幅?用 Awaking 留住塔顶,收紧两侧环境
ios
庚鑫1 天前
iOS 27 兼容放大模式下,keyboardFrame 与 UIScreen.bounds 的坐标差异
ios·objective-c
HEJOO91 天前
iOS 高效绘图:从 Core Graphics 到 Metal 的实践指南
macos·ios·cocoa
HEJOO91 天前
iOS 性能优化全面详解
ios·性能优化·cocoa