zoukankan      html  css  js  c++  java
  • android bitmap 防止 内存溢出

    参考:http://blog.csdn.net/huangbiao86/article/details/8072128

     http://www.tuicool.com/articles/yemM7zf

    1.读取图片用BitmapFactory.decodeStream() 和BitmapFactorty.decodeFile() 避免用BitmapFactory.decodeResource ,前两个函数调用JNI>>nativeDecodeAsset()来完成decode,无需再使用java层的createBitmap,从而节省了java层的空间。

    注意: 通过查看源代码 发现 BitmapFactory.decodeResource最终也调用 nativeDecodeAsset(),但是在调用完之后根据手机密度进行缩放 即调用了createBitmap。

    2.优化Dalvik虚拟机的堆内存分配

    在程序onCreate时就可以调用

    private final static floatTARGET_HEAP_UTILIZATION = 0.75f; VMRuntime.getRuntime().setTargetHeapUtilization(TARGET_HEAP_UTILIZATION);即可。

    private final static int CWJ_HEAP_SIZE = 6* 1024* 1024 ;

    VMRuntime.getRuntime().setMinimumHeapSize(CWJ_HEAP_SIZE); //设置最小heap内存为6MB大小。当然对于内存吃紧来说还可以通过手动干涉GC去处理

    3.options设置图片尺寸   options.inSampleSize

    private ImageView preview;
    private String fileName= "/sdcard/DCIM/Camera/2010-05-14 16.01.44.jpg";
    BitmapFactory.Options options = new BitmapFactory.Options();
    options.inSampleSize = 2;//图片宽高都为原来的二分之一,即图片为原来的四分之一
    Bitmap b = BitmapFactory.decodeFile(fileName, options);
    preview.setImageBitmap(b);
    filePath.setText(fileName);
    options.inJustDecodeBounds = false // 只读边缘即大小
    options.inSampleSize = 2;//缩放
    options.inPurgeable = true;//内存不足时可回收
    options.inDither = false;//抗锯齿
    options.inPreferedConfig = Bitmap.Config.RGB565;//设置bitmapconfig 减少位图
    //4.0以上的
    options.inBitmap = true;//(从缓存中获取)达到重用Bitmap的目的
    options.inMutable = true;//可变的位图,加快图片生成
    

      

  • 相关阅读:
    安装xshell6
    eclipse的安装和汉化
    collectd+infludb+grafana实现tomcat JVM监控
    百度网站统计和CNZZ网站统计对比
    shell,计算指定行的和,计算指定列的和
    我为什么要写博客
    kafka监控之topic的lag情况监控
    用rundeck启动tomcat报错
    xwiki升级8.8.4
    矩阵掩膜操作
  • 原文地址:https://www.cnblogs.com/wjw334/p/4422873.html
Copyright © 2011-2022 走看看