收藏Android下bitmap内存限制OUT OF MEMORY的方法
http://www.ligotop.com/2011/0412/59.html
Android有效解决加载大图片时内存溢出的问题
尽量不要使用setImageBitmap或setImageResource或BitmapFactory.decodeResource来设置一张大图,
因为这些函数在完成decode后,最终都是通过java层的createBitmap来完成的,需要消耗更多内存。
因此,改用先通过BitmapFactory.decodeStream方法,创建出一个bitmap,再将其设为ImageView的 source,
decodeStream最大的秘密在于其直接调用JNI>>nativeDecodeAsset()来完成decode,
无需再使用java层的createBitmap,从而节省了java层的空间。
如果在读取时加上图片的Config参数,可以跟有效减少加载的内存,从而跟有效阻止抛out of Memory异常
另外,decodeStream直接拿的图片来读取字节码了, 不会根据机器的各种分辨率来自动适应,
使用了decodeStream之后,需要在hdpi和mdpi,ldpi中配置相应的图片资源,
否则在不同分辨率机器上都是同样大小(像素点数量),显示出来的大小就不对了。
http://hi.baidu.com/liganggang/item/6ab1e480fa2da1e3e596e015
byte转化为Bitmap,防止内存溢出
ByteArrayInputStream is =new ByteArrayInputStream(byte[]);
BitmapFactory.Options options=new BitmapFactory.Options();
options.inPurgeable = true;
options.inInputShareable = true;
options.inSampleSize = 2;
try {
BitmapFactory.Options.class.getField("inNativeAlloc").setBoolean(options,true);
} catch(Exception ex) {
ex.printStackTrace();
}
Bitmap imgBit = (new WeakReference<Bitmap>(BitmapFactory.decodeStream(is, null, options))).get();
分享到:
相关推荐
文档标题和描述中提到的“ANDROIDBITMAP内存限制OOM,OUTOFMEMORY”指的就是在处理位图(BITMAP)时超出了虚拟机(VM)的内存预算,导致系统抛出OutOfMemoryError异常。 根据给出的内容部分,我们可以推断出以下知识...
7. **监控内存使用**:利用Android的`ActivityManager`或第三方工具如MAT(Memory Analyzer Tool),可以分析应用的内存使用情况,找出内存泄漏和不必要的内存占用。 通过以上方法,开发者可以有效地管理和控制...
在Android开发中,我们经常会遇到内存管理的问题,特别是与Bitmap相关的内存溢出(Out Of Memory,简称OOM)问题。Bitmap对象是Android系统中用于处理图像数据的重要类,但由于其消耗大量的内存,不当使用可能导致...
在Android开发中,内存管理是至关重要的,尤其是避免内存溢出(Out of Memory,简称OOM)。内存溢出会导致应用程序崩溃,影响用户体验。本篇文章将详细阐述如何在Android中有效地防止内存溢出,主要包括理解不同类型...
然而,由于Bitmap对象通常占用大量的内存,不当的处理可能导致内存溢出(Out Of Memory)问题,因此对Bitmap进行高效管理是至关重要的。本示例将详细介绍Android中Bitmap的处理,包括图片缓存策略和加载大图的技巧。...
内存溢出(Out Of Memory,简称OOM)通常发生在应用消耗的物理内存超过了系统分配给它的最大内存限制。对于Android而言,当一个进程使用的本机或Java堆内存超过了一定阈值时,就会触发OOM错误。`Bitmap`作为占用内存...
在Android开发中,Bitmap对象是用于处理图像的主要工具,但如果不妥善管理,它可能会引发一个常见的问题:Out of Memory(OOM)错误。特别是在处理大尺寸图片时,由于内存限制,系统可能无法分配足够的内存,从而...
- **Bitmap的尺寸调整**:通过`Bitmap.createScaledBitmap()`方法,根据需要调整Bitmap的尺寸,防止因图片过大导致OOM(Out Of Memory)错误。 - **Bitmap的缓存策略**:实现LRU(Least Recently Used)缓存,提高...
在Android开发中,Bitmap对象是用于处理图像的主要类,但如果不妥善管理,它可能会引发“Out Of Memory”(OOM)错误。这是因为Android设备的内存有限,尤其是对于大型图像,加载到内存中会消耗大量资源。当应用无法...
在Android开发过程中,"Out Of Memory"(OOM)错误是一个常见的问题,特别是在处理大量数据、图像或者长时间运行的任务时。这个错误表示应用程序消耗了过多的内存,超过了系统分配的限制,导致系统无法再为该应用...
在Android开发中,Bitmap对象是用于处理图像的重要类,但如果不妥善管理,它可能会引发“Out Of Memory”(OOM)错误。这是因为Android设备的内存有限,尤其是当加载大图或大量图片时,容易超出可用内存限制。"处理...
在Android开发中,Bitmap对象是图像处理的核心,但由于其消耗大量内存,不当使用往往会导致应用性能下降甚至引发内存溢出(Out Of Memory)问题。因此,Bitmap的内存管理与优化至关重要,尤其是对于图像密集型应用而...
在Android开发中,内存管理是至关重要的,尤其是处理图片资源时,经常遇到内存溢出(Out Of Memory,简称OOM)的问题。本项目提供了一个在Android 1.6 SDK环境下编写的工具类,旨在帮助开发者有效地避免内存溢出,...
由于Bitmap占用大量内存,不当管理可能导致OOM(Out Of Memory)异常。因此,我们需要合理使用`Bitmap.Config`来选择合适的图像格式(如ARGB_8888、RGB_565等),降低内存消耗。另外,使用`Bitmap.createBitmap()`...
然而,由于Bitmap对象占用大量的内存,直接加载大图片可能会导致内存溢出(Out Of Memory,OOM)问题。因此,高效地创建和管理Bitmap至关重要。本篇文章将详细介绍如何通过byte数组以流的形式创建Bitmap,并且结合...
然而,如果应用程序在短时间内分配大量内存,或者持有大量无法释放的对象引用,就可能导致内存溢出(Out Of Memory,OOM)。 例如,错误信息"02-04 21:46:08.703: ERROR/dalvikvm-heap(2429): 1920000-byte ...
Android内存优化是提升应用性能和用户体验的关键因素,尤其是在防止Out Of Memory (OOM)错误方面。本文将深入探讨Android内存管理的基础、内存优化策略、Bitmap的使用及管理、内存泄漏的原因和解决方案,以及如何...
解决办法是使用BitmapFactory.Options来配置解码时的缩放和格式,减少内存占用,或者在不再需要Bitmap时调用`recycle()`方法释放资源,但在某些情况下,直接设置为null也可以触发GC回收。 3. **线程的内存泄露**: ...