我们经常会涉及到对相机拍照,然后处理拍照后的图片,最后在显示到UI上。如果处理的不好,就会导致系统卡顿,甚至会出现OOM,程序崩溃。
图片的处理

public static BitmapDrawable getScaledDrawable(Activity a, String path) {if (a == null) return null;Display display = a.getWindowManager().getDefaultDisplay();int destWidth = display.getWidth();int destHeight = display.getHeight();// Read in the dimensions of the image on diskBitmapFactory.Options options = new BitmapFactory.Options();options.inJustDecodeBounds = true;BitmapFactory.decodeFile(path, options);int srcHeight = options.outHeight;int srcWidth = options.outWidth;int inSampleSize = 1;if (srcHeight > destHeight || srcWidth > destWidth) {if (srcWidth > srcHeight) {inSampleSize = Math.round(srcHeight / destHeight);} else {inSampleSize = Math.round(srcWidth / destWidth);}}options = new BitmapFactory.Options();options.inSampleSize = inSampleSize;Bitmap bitmap = BitmapFactory.decodeFile(path, options);return new BitmapDrawable(a.getResources(), bitmap);
}

图片的回收

public static void cleanImageView (ImageView imageView) {if (!(imageView.getDrawable() instanceof BitmapDrawable))return;// clean uo the view's image for the sake of memoryBitmapDrawable b = (BitmapDrawable) imageView.getDrawable();b.getBitmap().recycle();imageView.setImageDrawable(null);
}

Bitmap.recycle() 方法的调用需要一些解释。Android开发文档暗示不需要调用Bitmap.recycle()方法,但实际上需要。

Bitmap.recycle()方法释放了Bitmap占用的原始存储空间。这也是Bitmap对象最核心的部分,这取决于具体的安卓版本,原始存储空间可大可小,在Honeycomb之前,它存储了Java Bitmap的所有数据。

如果不主动调用recycle()方法释放内存,占用的存储空间也会被清理。但是,它是在将来的某个时间点在finalizer中清理,而不是在Bitmap自身的垃圾回收中清理。这意味着很可能在finalizer调用之前,应用已经耗尽内存资源了。

finalizer的执行有时不太靠谱,且这类bug很难追踪和重现。因此,如果应用使用的图片文件很大,最好主动调用recycle()方法,以避免可能的内存耗尽问题。

在onStart() 方法中加载图片,在onStop()方法中移除图片是一种好的习惯。这些方法标志着用户可以看到Activity的时间点。

Android 图片处理以及recycle机制相关推荐

  1. Android图片加载框架最全解析(三),深入探究Glide的缓存机制

    转载请注明出处:http://blog.csdn.net/guolin_blog/article/details/54895665 本文同步发表于我的微信公众号,扫一扫文章底部的二维码或在微信搜索 郭 ...

  2. Android 图片压缩器

    概述 Android 图片压缩器:一款高效的图片压缩器库,支持批量压缩,异步压缩.多线程多任务压缩,压缩比设置等特性. 详细 代码下载:http://www.demodashi.com/demo/12 ...

  3. android 手机内存uri_Android消息机制Handler原理解析

    关注[搜狐技术产品]公众号,第一时间获取技术干货 导读 在Android中,Handler一直是一个热点,在开发过程中,它的使用频率很高,而且在Android源码中Handler都是常客.那么Hand ...

  4. Android 图片框架原理——Glide源码分析

    目录 前言 一.With() 二.load() 三.into() 1. buildImageViewTarget() 2.关注1 :buildRequest 构建 3.关注2:runRequest 执 ...

  5. Android图片加载框架最全解析(二),从源码的角度理解Glide的执行流程

    转载请注明出处:http://blog.csdn.net/guolin_blog/article/details/53939176 本文同步发表于我的微信公众号,扫一扫文章底部的二维码或在微信搜索 郭 ...

  6. fackbook的Fresco (FaceBook推出的Android图片加载库-Fresco)

    [Android开发经验]FaceBook推出的Android图片加载库-Fresco 欢迎关注ndroid-tech-frontier开源项目,定期翻译国外Android优质的技术.开源库.软件架构 ...

  7. Android图片缓存之Lru算法

    前言: 上篇我们总结了Bitmap的处理,同时对比了各种处理的效率以及对内存占用大小.我们得知一个应用如果使用大量图片就会导致OOM(out of memory),那该如何处理才能近可能的降低oom发 ...

  8. Android 图片合成:添加蒙板效果 不规则相框 透明度渐变效果的实现

    Android 图片合成:添加蒙板效果 不规则相框 透明度渐变效果的实现 暂时还未有时间开发这效果,所以先贴出来. 先贴一张效果图,这是一张手机截屏: 左上方的风景图:背景图片 右上方的人物图:前景图 ...

  9. 《OpenGL ES 3.x游戏开发(上卷)》一1.5 Android应用程序运行的机制

    本节书摘来异步社区<OpenGL ES 3.x游戏开发(上卷)>一书中的第1章,第1.5节,作者: 吴亚峰 责编: 张涛,更多章节内容可以访问云栖社区"异步社区"公众号 ...

  10. 浅谈Service Manager成为Android进程间通信(IPC)机制Binder守护进程之路

    原文地址: http://blog.csdn.net/luoshengyang/article/details/6621566 上一篇文章Android进程间通信(IPC)机制Binder简要介绍和学 ...

最新文章

  1. Sublime Text 3 常用插件以及安装方法(转)
  2. 到底什么是生成式对抗网络GAN?
  3. SQLite 入门教程(三)好多约束 Constraints
  4. leetcode 501. 二叉搜索树中的众数(Java版)
  5. php中qq授权登录,ThinkPHP利用QQ互联实现网站第三方登录(QQ登录)
  6. BZOJ1324Exca王者之剑BZOJ1475方格取数——二分图最大独立集
  7. redis分布式客户端中间件
  8. day12 装饰器的进阶
  9. C#中使用Buffer.BlockCopy()方法将string转换为byte array的方法:
  10. 基于OpenCV的人脸识别考勤系统——创业计划书
  11. mysql索引失效的几种情况
  12. 08-搭建Rest服务 - 04权限管理
  13. python发邮件被认定为垃圾邮件_使用Python登陆QQ邮箱发送垃圾邮件 简单实现
  14. python Calendar日历模块函数介绍
  15. 如何通过KRPano全景资源下载助手来批量下载720yun的全景图
  16. 【数据分析实战】杭州2019年链家在售房源数据分析
  17. TDA4 J721 EVM开发板开发学习
  18. 免费软件 Cmd GUI Shell(图形界面的命令提示符壳)-beta3
  19. cocos创建九宫格图片
  20. 程序人生:一直加班也不是办法!2021,程序员的出路在哪里?

热门文章

  1. 智慧校园中教务管理系统功能需求思路设计分享来自博奥智源
  2. twitter跳过手机验证_twitter跳过手机验证_twitter手机验证不了_攻略
  3. 丘成桐:数理与人文(官方完整版PDF下载)(公号回复“丘成桐数学”下载PDF典型资料,欢迎转发、赞赏支持科普)
  4. 缓解眼睛疲劳,护眼调节色温软件推荐
  5. 遇见,那一份最美的眷恋
  6. 信息奥赛一本通1196:踩方格
  7. WIN10 WIFI热点 手机连接显示无网络连接问题解决
  8. 深度学习Course4第三周Detection Algorithms习题整理
  9. 企业单位申请代码签名证书方法
  10. magicbook java开发_荣耀MagicBook2019 Intel版值得买吗 MagicBook2019 Intel版笔记本详细评测...