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

相关推荐
zhlx28352 小时前
【免越狱】iOS砸壳 可下载AppStore任意版本 旧版本IPA下载
macos·ios·cocoa
XZHOUMIN13 小时前
网易博客旧文----编译用于IOS的zlib版本
ios
爱吃香菇的小白菜16 小时前
H5跳转App 判断App是否安装
前端·ios
二流小码农21 小时前
鸿蒙开发:ForEach中为什么键值生成函数很重要
android·ios·harmonyos
hxx2211 天前
iOS swift开发--- 加载PDF文件并显示内容
ios·pdf·swift
B.-1 天前
在 Flutter 应用中调用后端接口的方法
android·flutter·http·ios·https
️ 邪神1 天前
【Android、IOS、Flutter、鸿蒙、ReactNative 】约束布局
android·flutter·ios·鸿蒙·reactnative
️ 邪神2 天前
【Android、IOS、Flutter、鸿蒙、ReactNative 】文本点击事件
flutter·ios·鸿蒙·reactnative·anroid
️ 邪神2 天前
【Android、IOS、Flutter、鸿蒙、ReactNative 】文本Text显示
flutter·ios·鸿蒙·reactnative·anroid
袁代码2 天前
Swift 开发教程系列 - 第11章:内存管理和 ARC(Automatic Reference Counting)
开发语言·ios·swift·ios开发