也说图片oom的问题

1 篇文章 0 订阅
1 篇文章 0 订阅

关于图片加载内存优化的问题,这个网站http://www.360doc.com/content/11/0610/17/128678_126045519.shtml总结的比较全了,最有效的就是设置inSimpleSize,这样子可以大大减小内存占用。

在这里还要补充一点,如果你把取出来的bitmap存入文件,你会发现这个文件并没有缩小(和原始的文件一样大,而不是设置了simplesize后内存占用的大小)。这种问题在设置壁纸时很可能发生,android会把你传入的bitmap保存在指定位置(这时文件会很大,当设置好壁纸,你再次去取壁纸时,由于存图片的文件很大,就很容易oom)。

怎么办呢,还有办法的。你可以把simplesize过的图片用Bitmap.createScaledBitmap(src, dstWidth, dstHeight, filter)方法,再进行实际的剪切,得出真正想要大小的图片(这个图片就很小了),再传给系统作为壁纸,这样文件就小很多。

 

simplesize只是减小了图片在内存的大小,存入文件时还是原来的大小,而createScaledBitmap会对图片进行裁剪,得到一个较小的图片。

这就为我们提供了一个思路,取图片时设置一个合理的simplesize,存储的时候用createScaledBitmap缩小图片实际大小(因为createScaledBitmap第一个参数是bitmap,直接读大图片会oom,必须设置simplesize)


ps:补充一个总被人提到的setMinimumHeapSize方法,它的作用是告诉jvm,在heapsize在指定的大小以下时,不要做GC。好处是不会让程序在不断而不必要的GC中变慢。关于内存有两点。1.setMinimumHeapSize要在系统引导时设置(launcher是在launcherApplication的cnCreat第一行设置的)。2.程序启动后,程序做某件事需要消耗的内存是不能计算的 

ps部分出自http://stackoverflow.com/questions/1518154/what-is-the-objective-of-setting-the-minimum-heap-size-in-an-android-app

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值