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是否有离屏渲染问题

相关推荐
fzxwl29 分钟前
隆重推荐(Android 和 iOS)UI 自动化工具—Maestro
android·ui·ios
若水无华2 天前
fiddler 配置ios手机代理调试
ios·智能手机·fiddler
Aress"2 天前
【ios越狱包安装失败?uniapp导出ipa文件如何安装到苹果手机】苹果IOS直接安装IPA文件
ios·uni-app·ipa安装
Jouzzy2 天前
【iOS安全】Dopamine越狱 iPhone X iOS 16.6 (20G75) | 解决Jailbreak failed with error
安全·ios·iphone
瓜子三百克2 天前
采用sherpa-onnx 实现 ios语音唤起的调研
macos·ios·cocoa
左钦杨2 天前
IOS CSS3 right transformX 动画卡顿 回弹
前端·ios·css3
努力成为包租婆2 天前
SDK does not contain ‘libarclite‘ at the path
ios
安和昂3 天前
【iOS】Tagged Pointer
macos·ios·cocoa
I烟雨云渊T4 天前
iOS 阅后即焚功能的实现
macos·ios·cocoa
struggle20254 天前
适用于 iOS 的 开源Ultralytics YOLO:应用程序和 Swift 软件包,用于在您自己的 iOS 应用程序中运行 YOLO
yolo·ios·开源·app·swift