【鸿蒙实战开发】图片三方库Imageknife3.x优化总结

前言

总所周知,主流应用都有瀑布流下拉图片的页面,为了使页面更丝滑,通常需要对图片进行缓存。这种通用需求,对标竞品往往使用三方库来实现,比如安卓有Glide 、Picasso、ImageLoader。IOS有SDWebImage,Kingfisher,PINRemoteImage。当前鸿蒙应用开发,主要推荐使用@ohos/imageknife.
在这里插入图片描述

然而@ohos/imageknife 2.x版本主要网络下载图片和解析的逻辑虽然是使用异步promise的方式,原则上不阻塞主线程。但是,当在页面快速下滑时,由于有很多的图片同时请求和加载,还是会造成主线程整体执行时间过长,导致页面出现丢帧卡顿。

为了解决这个问题,我逐步开始分析@ohos/imageknife和glide的源码,决定对@ohos/imageknife做一次彻底的重构,也就是当前的3.x版本。根据目前从仿抖音应用测试快速下拉图片的页面测试数据来看,丢帧率已经从原来6%+,下降几乎为0%。于是乎,总结了下从3.x–>2.x主要的优化手段,相信这些方式不仅对三方库法,对应用开发也会有很大的借鉴意义。

1.把主要的逻辑移植到子线程里。

自API11以后,鸿蒙应用提供了TaskPool的能力(https://docs.openharmony.cn/page … ool-introduction.md),因此我把图片加载的主要逻辑:网络下载+文件

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值