这是我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是最好的学习.如果英语不好,还可以锻炼英语.