Android开发中如何避免内存溢出
2010-05-29 03:07:00 来源:WEB开发网核心提示:如果您在开发中遇到如上所示的错误,那么请您看完本文!首先我们要明确一点,Android开发中如何避免内存溢出,在android开发中,堆的大小!=机器内存大小(Heap size != External Memory size)android虚拟机自身已经限制了一个进程的内存在0——4MB之间,您可以通过资源文件加载图
如果您在开发中遇到如上所示的错误,那么请您看完本文!
首先我们要明确一点,在android开发中,堆的大小!=机器内存大小(Heap size != External Memory size)
android虚拟机自身已经限制了一个进程的内存在0——4MB之间,如果超过4M,那么您就会得到象 BitmapFactory.DecodeFile Error 这样的错误,这就可以解释为什么我们看到内存还剩下2M,但虚拟机却不给我们分配700K的空间。所以通过增大系统内存的方法是行不通的,我们只能通过减少内存的使用,这也是我所知道的唯一的方法,并且已经获得成功。
解决方案:
如果您使用一个Gallery来展示很多大图片,那么你需要一个 ImageAdapter来得到图片信息,因此,就很把很多的ImageView 放到一个List中。现在,当你在设置 ImageView时(哪怕你并不使用它),系统内存都会超过4M,就算你调用回收内存的方法也不管用。唯一的解决方法就是不用使用太多的图片控件,建议在5——10个之间即可。
我们怎么做呢?
这个一个很棘手的问题,你需要在您的ImageAdapter中写一个算法,让它能够释放当前不显示图片的内存,我们可以这样调用:
myImageView.setImageBitmap(null);
如果你有胆量的话,在你不需要显示原始图片时,您可以通过资源文件加载图片,但是要注意,如果错误的使用资源文件也会把4M的内存耗尽。方法如下所示:
myImageView.setImageResource(R.drawable.loadingImage);
- ››Android 当修改一些代码时,使用什么编译命令可以最...
- ››Android 如何添加一个apk使模拟器和真机都编译进去...
- ››Android 修改Camera拍照的默认保存路径
- ››Android 如何修改默认输入法
- ››如何检查oracle的归档空间是否满了
- ››如何在浏览器中打开PDF文件并实现预览的思路与代码...
- ››如何改Win7系统我的文档保存位置
- ››android开发中finish()和System.exit(0)的区别
- ››Android手势识别简单封装类
- ››android中查看项目数字证书的两种方法
- ››Android中获取IMEI码的办法
- ››android 相机报错 setParameters failed
更多精彩
赞助商链接