燃烧我的卡路里——Flutter瘦内存、瘦包之图片渲染组件

本文介绍了闲鱼在Flutter商品详情页遇到的内存、安装包和图片问题,以及通过FXTexImage组件进行的优化。FXTexImage利用Flutter的外部纹理技术,实现了与Native图片库的串联,解决了内存累积、资源复用等问题。在FXTexImage的后续版本中,针对内存、CPU进行了优化,提升了滑动帧率,并减少了安装包大小。尽管还存在CPU占用和图片放大锯齿等遗留问题,但FXTexImage已在实际应用中显著降低了Abort率并提高了用户体验。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

背景

在电商类APP里,图片到现在为止仍然是最重要的信息承载媒介,不得不说逛淘宝的过程,其实就是一个看图片的过程。而商品详情页中的图片,通常是页面中内存占用最多的内容,占用了整个页面内存的超过 50%,因此是通常容易引起app闪退的场景之一。

闲鱼在Flutter化的过程中,选择了商品详情页作为第一个落地的场景。通过多版本的迭代完善,基于Flutter的详情页已经在闲鱼稳定运行。然而正因为详情页的图片量大,导致Flutter里图片相关的问题一直挥之不去。

1:内存问题 --- 连续push flutter界面内存累积

2:安装包问题 --- 过渡时期两份重复资源文件

3:寻址缓存问题 --- 原有的寻址缓存策略无法复用

4:图片复用问题 --- Native和Flutter重复下载相同图片

解决方案——FXTexImage_V1

为了解决这些问题,我们尝试着寻找一种新的思路,一种能够将flutter与native串联起来的思路。而之前做视频播放器的方案给了我们启发。

熟悉Flutter的同学应该都知道,Flutter的视频组件是基于一个Flutter提供的一个叫“外接纹理”的技术实现的,关于flutter外接纹理,本人另外有一篇文章有更详细的论述,这里不再赘述《https://mp.weixin.qq.com/s/KkCsBvnRayvpXdI35J3fnw

我们将每一张图片假想成一个:静态的视频。图片的内容由一个externaltexture来负责显示,而这个externaltexture则由native端提供具体的渲染数据。

640?wx_fmt=png

通过这种方案,我们便可以通过externa

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值