Android OOM(Out of Memory) 一小点见解

今年做公司项目的时候,自己做与File有关的那部分。

需求如下:

        如果是图片就完全显示出来,如果不是图片就让显示默认的图标。还有两种不同的显示方式,一种是tile view(瓦片样式,就是一行可以有好几个文件,类似GridView,但是有的Item可以跨行),另一种就是list View.

众所周知,每一个Android APP 分配16M的内存,图片的内存被分配给8M,这些内存真是少的有点可怜,内存的及时回收显得极为重要,内存的重复利用同样如此。

我自己写了一个ImageDownloader类来异步下载图片,并且把图片和URL对应保存到内存中,当出现相同的url时,不用再次从网络下载,直接从内存里面取,节省了时间,也节省了网络资源。

刚开始的时候只要屏幕上有几张图片,不同视图(tile view 和 list view)之际切换就会有出现如下error:“ bitmap size exceeds vm budget”,相信大多数人都遇到过这样的问题。

一直不知道怎么解决?

      后来才发现了问题所在:我的两个Adapter(TileViewAdapter 和ListViewAdapter)中各自保存了一个ImageDownloader,这样就会使用的内存加倍,所有我的解决方法就是把ImageDownloader变量位置向上提一级,放到他们共同的Activity中,问题就解决了。



如果发现任何问题,请您指正。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值