Android关于Bitmap内存溢出的一点想法

news/2024/7/20 13:52:42 标签: 移动开发, 内存管理

对于任何手机来说,内存管理至关重要,不管是Android还是iphone,在程序中及时回收资源,可以防止内存的溢出.

例如:

for(int i = 0; i < list.size(); i++){ Bitmap bitmap = loadImageFromUrl(list.get(i)); ImageView imageView = new ImageView(this); imageView.setImageBitmap(bitmap); mImages[i] = imageView; }


这里对于Bitmap就没有很好回收和利用,因为是循环,所以Bitmap就可以放到外部,让程序重复利用,而不需要每次都创建一个新的Bitmap对象,而且如果在内部作好资源回收利用的话,那就不用担心内存溢出了.

改动后的程序:

Bitmap bitmap = null for(int i = 0; i < list.size(); i++){ bitmap = loadImageFromUrl(list.get(i)); ImageView imageView = new ImageView(this); imageView.setImageBitmap(bitmap); mImages[i] = imageView; //if(!bitmap.isRecycled() && bitmap != null){ //bitmap.recycle(); //bitmap = null; } }

只是做了小小的改动,但对于程序的内存来说,那可是很好的利用.

其实对于GridView或是Gallery,在创建SimpleAdapter的时候会有一个getView,里面有一参数是convertView,建议用convertView来建立View,因为这个convertView有缓冲和及时回收功能,不会出现OOM的情况,至于网络上很多人说的软引用或是硬引用之类的,我觉得效果不是很明显.


http://www.niftyadmin.cn/n/999247.html

相关文章

ubuntu-14.04.2-desktop-amd64.iso:ubuntu-14.04.2-desktop-amd64:安装Oracle11gR2

ubuntu 桌面版的安装不介绍。 如何安装oracle&#xff1a;核心步骤和关键点。 ln -sf /bin/bash /bin/sh ln -sf /usr/bin/basename /bin/basename ln -sf /usr/bin/awk /bin/awk ln -sf /usr/bin/env /bin/env mkdir -p /usr/lib64 ln -s /usr/lib/x86_64-linux-gnu/libc_nons…

linux下常见网络故障的处理思路

据统计&#xff0c;linux系统下产生的故障有60%来自网络&#xff0c;其他来自系统本身&#xff0c;解决linux网络的顺序应该从linux自身底层网络开始&#xff0c;然后逐步排查。网络硬件问题&#xff0c;可以通过检查网线、网卡、交换机等是否正常来确认是否由硬件问题造成网络…

无序html标签

<html><body><h4>一个无序列表&#xff1a;</h4><ul><li>咖啡</li><li>茶</li><li>牛奶</li></ul><body></html>效果一个无序列表&#xff1a;咖啡茶牛奶转载于:https://blog.51cto.com/…

使用GregorianCalendar模拟实现查看当前月的日历

本次实验在于测试日期类的一些方法的使用&#xff0c;通常我们会使用Calendar调用getInstance()方法创建对象&#xff0c;这里也可以使用Calendar的子类 GregorianCalendar类去创建&#xff0c;在这里&#xff0c;模拟实现了&#xff0c;通过运行该代码段&#xff0c;就能知道今…

Android使用Pull解析器解析XML文件

Pull简介 1.常见的XML解析方式有三种&#xff0c;DOM、SAX、Pull&#xff0c;Android系统中推荐使用Pull 2.Pull解析器是一个开源的Java项目&#xff0c;Android系统内部解析XML文件均为此种方式&#xff0c;也可用于JavaEE项目 3.Android SDK中已经集成了Pull解析器&#xff0…

进程与线程关系的形象解释

进程&#xff08;process&#xff09;和线程&#xff08;thread&#xff09;是操作系统的基本概念&#xff0c;但是它们比较抽象&#xff0c;不容易掌握。 最近&#xff0c;我读到一篇材料&#xff0c;发现有一个很好的类比&#xff0c;可以把它们解释地清晰易懂。 1. 计算机的…

后台IO高负载造成JVM GC长时间停顿

在我们的生产环境中&#xff0c;我们已经多次看到在JVM (Java虚拟机)中运行的应用程序偶尔会遇到很大的STW (Stop-The-World)应用程序暂停&#xff0c;原因是JVM的GC日志被后台IO通信阻塞(例如&#xff0c;OS页面缓存写回)。在这种STW暂停期间&#xff0c;JVM暂停所有应用程序线…

郑重声明:《深入理解Android 卷I》是一本真正的原创书籍

近来有不少读者向编辑反应&#xff1a; 1 本书很多内容从网上可以搜索到。 2 Binder一章从一个国外网站可以搜索到英文版&#xff08;http://unknownerror.net/2011-06/mechanism-of-binder-layman-android-5-30302&#xff09; 这里要郑重声明一下&#xff1a; 1 本书的来…