前言
众所周知,每个Android应用程序在运行时都有一定的内存限制,限制大小一般为16MB或24MB(视平台而定)。因此在开发应用时需要特别关注自身的内存使用量,而一般最耗内存量的资源,一般是图片、音频文件、视频文件等多媒体资源;由于Android系统对音频、视频等资源做了边解析便播放的处理,使用时并不会把整个文件加载到内存中,一般不会出现内存溢出(以下简称OOM)的错误,因此它们的内存消耗问题暂不在本文的讨论范围。本文重点讨论的是图片的内存消耗问题,如果你要开发的是一款图片浏览器应用,例如像Android系统自带的Gallery那样的应用,这个问题将变得尤为突出;如果你开发的是目前的购物客户端,有时候处理不当也会碰到这种问题。
目前碰到的OOM场景,无外乎以下几种情形,不过无论是哪种情形,解决问题的思路都是一致的。
(1)显示单张图片,图片文件体积达到3000*4000级别的时候;
(2)在ListView或Gallery等控件中一次性加载大量图片时;
相关知识介绍
1.颜色模型
常见的颜色模型有RGB、YUV、CMYK等,在大多数图像API中采用的都是RGB模型,Android也是如此;另外,在Android中还有包含透明度Alpha的颜色模型,即ARGB。关于颜色模型更加详细的信息暂不在本文的讨论范围之内。
虚拟机的堆内存分配的方法来解决OOM,本文也没有给予演示;再比如在上文的演示试验里,没有把内存占用情况的详细信息用图像形式直观地展示出来;还有演示所用的图片数量过少、规格单一、测试环境偏少,所有没能进行更加严谨科学的对比试验,遗漏了某些意外情况。最后欢迎大家来共同探索、交流并提出建议。
相关推荐
android 永远不会oom的瀑布流
Android 图片下载以及内存处理防止OOM内存溢出 源码
Android解决图片OOM问题的Demo小实例,里面有注释,初学者应该能看懂
解决Android加载图片出现的OOM问题
基本上解决了OOM问题 如果 方便可以直接引用BitmapManager类到 项目中使用 解决blog 地址http://www.cnblogs.com/liongname/articles/2345087.html
android解决OOM
android图片墙,解决oom 博客地址: http://blog.csdn.net/pangzaifei/article/details/37763753
介绍了android开发中OOM错误的原因。
安卓下显示图片经常遇到OOM问题,这里给出了常用解决方案
图片oom,解决方法 图片oom,完美deom
安卓在加载大图的时候经常会出现oom的错误,给大家分享我的一些处理经验。这个版本关闭了硬件加速。
安卓在加载大图的时候经常会出现oom的错误,给大家分享我的一些处理经验。 这个是优化后的版本。
Android解决图片加载OOM与listview图片错位乱跳问题解决,开源的代码,里面有示例demo
Android 内存 OOM 优化和治理,Android 内存泄漏原因详解与应对措施,Android 中的 Bitmap 使用详解,Android 中的 Bitmap 内存治理和优化详解,Android 内存分析命令详解,Java内存模型。Android 内存 OOM 优化和...
ANDROIDBITMAP内存限制OOM,OUTOFMEMORY.pdf
安卓在加载大图的时候经常会出现oom的错误,给大家分享我的一些处理经验。这是2.0版本。解决上个版本再次使用recycle bitmap的bug。
android 图片下载 防止OOM
Android例子源码仿oom的三例瀑布流源码
android之Gif处理(解决GIF显示容易OOM问题,包括代码和说明),非常详细的介绍,让我们直面GIF蛋疼的OOM吧
安卓Android源码——图片下载以及内存处理防OOM.zip