
宇连通IM经常会使用到gif图片,就增加了支持gif图片功能,已经gif图片制作功能。使IM不仅能发送截图,还能发送制作的gif图片。
但是当发送10M+的gif图片时,pc端内存就迅速升高,设置的500M内存就不够用了,就对gif占用大量内存进行了优化。
第一步优化: 不直接展示gif图片,而是读取gif中的图片,然后使用线程轮询展示图片,这样内存占用永远只是一张图片的大小。此种方法看起来已经解决掉了,但是,当消息列表中有多张大gif图片时,还是会占用太多内存。
第二部优化: 那就让消息列表中只展示当前需要展示的gif图片。此方法首先需要解决哪些图片是在展示区,哪些图片已经不在展示区了。当图片进入不需要展示区时,停止加载gif图片,停止加载线程,并释放内存。
通过上序两种优化方案,pc端的内存占用已经回归到正常。就测试flutter和arkts开发的客户端。
flutter制作IM直接对大gif图片当做普通图片展示,没有动画效果。需要针对性解决。
arkts鸿蒙IM对大gif能够正常展示,动画效果也很好。鸿蒙非常的牛逼。
这是就找了国内做的比较好的IM软件对大gif的展示效果如何,就找微信和QQ进行测试,试图从同行中找到解决的灵感。
Pc端微信做的很粗暴,对大于5M的gif图片直接当做文件处理,不做图片展示了。
PC端QQ对大gif支持得比较好,内存占用也不是很高,QQ做的还是很厉害了。
同时还测试了其他软件对大gif的支持情况: oschina上传10M+不支持上传。csdn也不能上传大于5M的gif。看来gif只能是小动画才行呀。
做好一个软件真的好难呀!!!,如果还需要继续优化下去,还需要大量的精力和潜心神的投入,
还没有评论,来说两句吧...