Android 图片处理以及recycle机制
我们经常会涉及到对相机拍照,然后处理拍照后的图片,最后在显示到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机制相关推荐
- Android图片加载框架最全解析(三),深入探究Glide的缓存机制
转载请注明出处:http://blog.csdn.net/guolin_blog/article/details/54895665 本文同步发表于我的微信公众号,扫一扫文章底部的二维码或在微信搜索 郭 ...
- Android 图片压缩器
概述 Android 图片压缩器:一款高效的图片压缩器库,支持批量压缩,异步压缩.多线程多任务压缩,压缩比设置等特性. 详细 代码下载:http://www.demodashi.com/demo/12 ...
- android 手机内存uri_Android消息机制Handler原理解析
关注[搜狐技术产品]公众号,第一时间获取技术干货 导读 在Android中,Handler一直是一个热点,在开发过程中,它的使用频率很高,而且在Android源码中Handler都是常客.那么Hand ...
- Android 图片框架原理——Glide源码分析
目录 前言 一.With() 二.load() 三.into() 1. buildImageViewTarget() 2.关注1 :buildRequest 构建 3.关注2:runRequest 执 ...
- Android图片加载框架最全解析(二),从源码的角度理解Glide的执行流程
转载请注明出处:http://blog.csdn.net/guolin_blog/article/details/53939176 本文同步发表于我的微信公众号,扫一扫文章底部的二维码或在微信搜索 郭 ...
- fackbook的Fresco (FaceBook推出的Android图片加载库-Fresco)
[Android开发经验]FaceBook推出的Android图片加载库-Fresco 欢迎关注ndroid-tech-frontier开源项目,定期翻译国外Android优质的技术.开源库.软件架构 ...
- Android图片缓存之Lru算法
前言: 上篇我们总结了Bitmap的处理,同时对比了各种处理的效率以及对内存占用大小.我们得知一个应用如果使用大量图片就会导致OOM(out of memory),那该如何处理才能近可能的降低oom发 ...
- Android 图片合成:添加蒙板效果 不规则相框 透明度渐变效果的实现
Android 图片合成:添加蒙板效果 不规则相框 透明度渐变效果的实现 暂时还未有时间开发这效果,所以先贴出来. 先贴一张效果图,这是一张手机截屏: 左上方的风景图:背景图片 右上方的人物图:前景图 ...
- 《OpenGL ES 3.x游戏开发(上卷)》一1.5 Android应用程序运行的机制
本节书摘来异步社区<OpenGL ES 3.x游戏开发(上卷)>一书中的第1章,第1.5节,作者: 吴亚峰 责编: 张涛,更多章节内容可以访问云栖社区"异步社区"公众号 ...
- 浅谈Service Manager成为Android进程间通信(IPC)机制Binder守护进程之路
原文地址: http://blog.csdn.net/luoshengyang/article/details/6621566 上一篇文章Android进程间通信(IPC)机制Binder简要介绍和学 ...
最新文章
- Sublime Text 3 常用插件以及安装方法(转)
- 到底什么是生成式对抗网络GAN?
- SQLite 入门教程(三)好多约束 Constraints
- leetcode 501. 二叉搜索树中的众数(Java版)
- php中qq授权登录,ThinkPHP利用QQ互联实现网站第三方登录(QQ登录)
- BZOJ1324Exca王者之剑BZOJ1475方格取数——二分图最大独立集
- redis分布式客户端中间件
- day12 装饰器的进阶
- C#中使用Buffer.BlockCopy()方法将string转换为byte array的方法:
- 基于OpenCV的人脸识别考勤系统——创业计划书
- mysql索引失效的几种情况
- 08-搭建Rest服务 - 04权限管理
- python发邮件被认定为垃圾邮件_使用Python登陆QQ邮箱发送垃圾邮件 简单实现
- python Calendar日历模块函数介绍
- 如何通过KRPano全景资源下载助手来批量下载720yun的全景图
- 【数据分析实战】杭州2019年链家在售房源数据分析
- TDA4 J721 EVM开发板开发学习
- 免费软件 Cmd GUI Shell(图形界面的命令提示符壳)-beta3
- cocos创建九宫格图片
- 程序人生:一直加班也不是办法!2021,程序员的出路在哪里?
热门文章
- 智慧校园中教务管理系统功能需求思路设计分享来自博奥智源
- twitter跳过手机验证_twitter跳过手机验证_twitter手机验证不了_攻略
- 丘成桐:数理与人文(官方完整版PDF下载)(公号回复“丘成桐数学”下载PDF典型资料,欢迎转发、赞赏支持科普)
- 缓解眼睛疲劳,护眼调节色温软件推荐
- 遇见,那一份最美的眷恋
- 信息奥赛一本通1196:踩方格
- WIN10 WIFI热点 手机连接显示无网络连接问题解决
- 深度学习Course4第三周Detection Algorithms习题整理
- 企业单位申请代码签名证书方法
- magicbook java开发_荣耀MagicBook2019 Intel版值得买吗 MagicBook2019 Intel版笔记本详细评测...