`

收藏Android下bitmap内存限制OUT OF MEMORY的方法

 
阅读更多

 

收藏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();  

 

分享到:
评论

相关推荐

    android bitmap outOfMemory解决方法

    android bitmap outofMemory 用来解决android中常见的bitmap outOfMemory

    ANDROIDBITMAP内存限制OOM,OUTOFMEMORY.pdf

    ANDROIDBITMAP内存限制OOM,OUTOFMEMORY.pdf

    ANDROIDBITMAP内存限制OOM,OUTOFMEMORY[文].pdf

    ANDROIDBITMAP内存限制OOM,OUTOFMEMORY[文].pdf

    Android的内存机制和溢出说明

    关于android内存机制的介绍,以及bitmap的内存泄露等问题的处理方式

    Android 加载大图及多图避免程序出现OOM(OutOfMemory)异常

    大家应该知道,我们编写的应用程序都是有一定内存限制的,程序占用了过高的内存就容易出现OOM(OutOfMemory)异常。我们可以通过下面的代码看出每个应用程序最高可用内存是多少。 int maxMemory = (int) (Runtime.

    Android开发中Bitmap高效加载使用详解

    在Android开发中,我们经常与Bitmap打交道,而对Bitmap的不恰当的操作经常会导致OOM(Out of Memory)。这篇文章我们会介绍如何高效地在Android开发中使用Bitmap,在保证图片显示质量的前提下尽可能占用更小的内存。

    Android相机拍照、截图功能的实例演示

     将保存在本地的图片取出并缩小后显示在界面上、由于Bitmap内存占用较大,这里需要回收内存,否则会报out of memory异常、将处理过的图片显示在界面上,并保存到本地、使用ContentProvider通过URI获取原始图片、为...

    Android Image Cache

    Android Image Cache,use disccache,memory cache to limit the program's bitmap's memory,in case of OutOfMemory error!

    解析Android开发优化之:对Bitmap的内存优化详解

    在Android应用里,最耗费内存的...而且在Android系统中,读取位图Bitmap时,分给虚拟机中的图片的堆栈大小只有8M,如果超出了,就会出现OutOfMemory异常。所以,对于图片的内存优化,是Android应用开发中比较重要的内容

    解决Android平台中应用程序OOM异常的方法

    首先,OOM就是内存溢出,即Out Of Memory。也就是说内存占有量超过了VM所分配的最大。 怎么解决OOM,通常OOM都发生在需要用到大量内存的情况下(创建或解析Bitmap,分配特大的数组等),在这样的一种情况下,就可能...

    浅析KJFrameForAndroid框架如何高效加载Bitmap

    每个人在最初学习Android的时候肯定都会知道这么一个原因:我们编写的应用程序都是有一个最大内存限制,其中JAVA程序和C程序(NDK调用时)共享这一块内存大小,程序占用了过高的内存就容易出现OOM(OutOfMemory)异常...

    android BitmapFactory.Options使用方法详解

    方法将突破转成Bitmap时,遇到大一些的图片,我们经常会遇到OOM(Out Of Memory)的问题。怎么避免它呢? 这就用到了我们上面提到的BitmapFactory.Options这个类。 BitmapFactory.Options这个类,有一个字

    新版Android开发教程.rar

    Compiler for Java, both of which are not supported for Android development----------------------------------- Android 编程基础 9 什么是 Android? Android? Android? Android? Android 是一个专门针对移动...

    Android利用软引用和弱引用避免OOM的方法

     在Java中,虽然不需要程序员手动去管理对象的生命周期,但是如果希望某些对象具备一定的生命周期的话(比如内存不足时JVM就会自动回收某些对象从而避免OutOfMemory的错误)就需要用到软引用和弱引用了。...

    Android图片缓存之Lru算法(二)

    我们得知一个应用如果使用大量图片就会导致OOM(out of memory),那该如何处理才能近可能的降低oom发生的概率呢?之前我们一直在使用SoftReference软引用,SoftReference是一种现在已经不再推荐使用的方式,因为从 ...

    Android 加载大图、多图和LruCache缓存详细介绍

    大家应该知道,我们编写的应用程序都是有一定内存限制的,程序占用了过高的内存就容易出现OOM(OutOfMemory)异常。我们可以通过下面的代码看出每个应用程序最高可用内存是多少 int maxMemory = (int) (Runtime....

    Android获取本地相册图片和拍照获取图片的实现方法

    需求:从本地相册找图片,或通过调用系统相机拍照得到图片。 容易出错的地方: 1、当我们指定了照片的uri路径,我们就不能通过data.getData();...就容易出现 out of memory(oom)错误,我们需要先把URI转换

    Android重写Gallery

    //An interpolator defines the rate of change of an animation. This allows the basic animation effects (alpha, scale, translate, rotate) to be accelerated, decelerated, repeated, etc. private ...

    安卓异步加载库jar

    | OUT_OF_MEMORY | UNKNOWN ImageLoadingListener | | | - onLoadingStarted(String, View) | | - onLoadingFailed(String, View, FailReason) | | - onLoadingComplete(String, View, Bitmap) | | - ...

Global site tag (gtag.js) - Google Analytics