ListView加载几百图片,不出oom

找到组织 发布于 2014/01/20 09:11
阅读 1K+
收藏 3

之前因为自己建了个群想让大家加,但是这上边一工作人员说不让建群,这是爬墙他们生意,在重新做一个呗,希望对一些人有点帮助,这两天搞了个小开源项目拿出来跟大家分享一下,主要就是解决怎样能够在listView中加载大量图片并生成Thumbnail尽量避免出现OOM的error,现在做的有了一定的雏形了拿出来一块讨论下,看看大家有什么意见想法可以提升的。

刚开始做这个东西的时候大家都说用softReference因为这个会在内存吃紧的时候主动释放掉自己占用的内存,防止出现oom,所以我就很高兴的屁颠屁颠的用了这个作为缓冲bitmap的容器,开始效果还不错担当图片数大于50左右的时候会出问题了就,出现各种问题,刷新延迟,错乱等等,之后发现可能是这个softreference的原因,当内存消耗比较大的时候会自动销毁部分之前已经缓存过的bitmap所以决定不用这个了。但是这样又会带来另一个问题那就是当图片大于五百张的时候会出现oom的问题,前提是你得做好用完的bitmap的释放工作才能到五百,不然会更少的图片引起oom,三百二百不知道。这下我就在找能够较好时限内存管理的bitmap的方法,于是乎bitmapfactory中的各种方法,等比缩小option等等,时能达到一定的解决oom的问题,但是如果用户就是要显示等比得bitmap那么就不能满足要求了,哎又是一顿瞎翻之后找到了一个叫做universalimageloader的github的开源控件用了一下结果还不错,所以就用这个吧,具体的项目进度和源码请大家到git上自己下载吧,最好能给我提些建议或者bug。地址http://git.oschina.net/xulong/ListView_thumbnails.git,大家可以在提交日志中看到不同的时期的代码。全是坑啊。

加载中
返回顶部
顶部