ibireme / YYWebImage

Asynchronous image loading framework.
MIT License
3.56k stars 615 forks source link

针对demo里的gif过多导致cpu暴涨的问题 #218

Open authhwang opened 6 years ago

authhwang commented 6 years ago

问题在于YYAnimatedImageView的494行的if判断 导致图片一直都需要不断的向下一帧的图片解码 因此cpu不停的暴涨 可是不知道当初设置这个条件的原因是啥 所以不知道怎么处理比较好? 我个人的理解上是觉得这个判断是用于当一帧的图片解码失败时候缓存图片的数组会传入NSNull 所以为了能重新解码才删除 或者 是用来保证每一帧都能被解码? 根据我的理解的解决方案有几个:

  1. 增加判断的条件 判断缓存图片里的数组的下一个元素是NSNull时候才进入if判断 2.如果注释了整个条件判断 就在_YYAnimatedImageViewFetchOperation里main方法的循环修改成不让idx++ 3.同样修改main方法 修改成当图片解码成功时候才incrBufferCount++ 或者看看大家还有没有什么建议~
1ess commented 6 years ago

请问找到好的解决办法了吗?

authhwang commented 6 years ago

@GodzzZZZ 三个方法都可以 看你想用哪一个咯

1ess commented 6 years ago

ok, 那我都试一下

shangxiaonan commented 5 years ago

cpu暴涨是因为他是一边删除缓存一边添加缓存,达到一个阈值就不会解码了,试试把[buffer removeObjectForKey:@(nextIndex)];注释掉,再把内存阈值调大点试试,不过这样内存占用就多了