我们经过两个月灰度上线了动图的逐帧解码方案, 并封装为图片的通用加载组件 QMAnimatedImageView, 优化带来如下改善:
解决展示动图频繁崩溃的问题, 包括 OOM / NSMallocException...基于上述的问题, 应该将逐帧加载思路应用到端内, 在动图加载到内存时, 只从二进制数据中解码第一帧; 然后在 CADisplayLink 触发时解析当前需要展示的帧, 同时合理地使用帧缓存, 避免上述...4.1 解码每一帧导致首帧加载太慢
怎么基于异步加载框架实现动图的逐帧加载呢?...这样实现一个既支持异步加载又能逐帧解码动图组件, 下图是动图解码优化的流程, 红色字是逐帧加载的改造.
4.1.2 首帧耗时
改造完之后, 需要验证逐帧加载方案是否会在首帧加载上有所改善....根据线上统计数据, 对于优化前是否解码, 以及优化后的逐帧解码三个方案, 首帧加载平均数据如下:
相比于预先全部解码, 逐帧解码的首帧耗时降低了一半; 在灰度期间, 动图首帧加载平均耗时都在 25ms