android out of memory初探

来源:互联网 发布:网络探针 编辑:程序博客网 时间:2024/06/05 02:02

这是我2013年的第一篇技术博客.

元旦期间看了android sdk里面的docs自带的training,对加载图片引起的out ofmemory一篇仔细阅读了以下.

先这里给大家献丑,把自己读的感受写出来.

原因分析:

由于android的机制是每个app都运行在一个DVM里,android又是多任务的,所以每个DVM都有内存限制.当应用需要的内存超过DVM分配的内存时就会发生out of memory

android给了大家3个方法

1.加载图片前先获取图片的尺寸和type

    bitmapfactory的decode方法里面,有个属性设置,可以先不解压图片,而只先获取图片的宽/高和mimetype.根据获取图片的宽高和imageview控件的宽/高再决定是否对原始图片进行缩放,将图片缩放到控件合适的尺寸再进行bitmap的decode,这样可以解决一些out of memory的现象.

2.后台异步处理

   图片的deocde肯定不能放到UI线程处理,一定要进行异步处理.这样才不会出现UI等待过长,导致出现那个经典的ANR问题,而force close.

3.图片缓存.

   对于一屏需要展示多张图片及切换屏幕的,当图片不再当前屏幕时,可以进行memory cash

--------

先写道这里吧,具体的大家可以到android sdk doc里面查看.我还没有完全读懂,这里抛砖引玉了!

sdk doc是最好的学习.如果英语不好,还可以锻炼英语.