Android Bitmap位图

Android Bitmap位图    

            
      1. Bitmap 对象只能通过BitmapFactory创建,BitmapFactory提供了静态方法decodeXXXXX(****)方法分别将五种资源加载成Bitmap对象中。
      2. BitmapFactory生成Bitmap对象是调用底层的JNI接口,所以在加载Bitmap图片这个过程中会包含两部分的内存区域,Java部分和C部分。  Java部分的会通过系统的垃圾回收机制自动回收,但是C部分的就不能自动回收了,所以Bitmap使用结束要调用recycle()方法释放C部分的内存。recycle()也是调用JNI接口实现。
       3. 读取Bitmap位图时,Android系统分配给虚拟机中的堆大小只有8M,所以Bitmap对象用完一定的及时回收。
    
						// 释放bitmap图片
						if (bitmap != null && bitmap.isRecycled()) {
							// 释放C部分占用的内存
							bitmap.recycle();
							// 加快Java部分的内存回收
							bitmap = null;
						}
						// 加快Java回收机制对Java部分中垃圾的回收,不一定马上回收,根据回收算法决定
						System.gc();
            4. Android 3.0后对Bitmap图片加载又对图片大小有限制了,主要是是硬件加速器对图片大小的限制,如果加载图片大于了这个限制就不能加载,提示Bitmap too large to be uploaded into a texture exception。这个限制不同的机子不一样,据说最小的是2048 * 2048。现在有一个粗暴的解决办法:<application android:hardwareAccelerated="false" ...>  关掉硬件加速器,但我个人认为这样不太好,如果有更好的解决方案的请留言。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值