基于上述的问题, 应该将逐帧加载思路应用到端内, 在动图加载到内存时, 只从二进制数据中解码第一帧; 然后在 CADisplayLink 触发时解析当前需要展示的帧, 同时合理地使用帧缓存, 避免上述...这样实现一个既支持异步加载又能逐帧解码动图组件, 下图是动图解码优化的流程, 红色字是逐帧加载的改造.
4.1.2 首帧耗时
改造完之后, 需要验证逐帧加载方案是否会在首帧加载上有所改善....根据线上统计数据, 对于优化前是否解码, 以及优化后的逐帧解码三个方案, 首帧加载平均数据如下:
相比于预先全部解码, 逐帧解码的首帧耗时降低了一半; 在灰度期间, 动图首帧加载平均耗时都在 25ms...{ int64_t memoryLimit = 0; // 获取当前内存使用数据 if (@available(iOS 13.0, *)) { task_vm_info_data_t...memoryLimit = deviceMemory * 0.55; }
if (memoryLimit 获取物理内存失败, 使用可用内存作为进程可用内存