由于手机内存的限制和网络流量的费用现在,我们在加载图片的时候,必须要做好图片的压缩和缓存。

图片缓存机制一般有2种,软引用和内存缓存技术。

1.压缩图片:压缩图片要既不能模糊,也不能拉伸图片。

图片操作的时候,最常用的是BitmapFactory,现在看看如何压缩图片。

Bitmapfactory.Options options= new BitmapFactory.Options();

options.inJustDecodeBounds = true;// 如果设置这个参数为ture,就不会给图片分配内存空间,但是可以获取到图片的大小等属性

2.软引用:只要有足够内存,就一直保持独享,直到内存吃紧并且没有强引用的时候回收对象。

主要用SoftReference,用法如下:

private Map<String,SoftReference<Bitmap> imageMap = new HasMap<String,SoftReference<Bitmap>>();

这里的key主要是图片的地址,可以是网络地址,也可以是SD卡上的图片地址。

3. 内存缓存技术:在android 中有一个叫LruCache class,是专门用来做图片缓存处理的。当缓存的图片到达了预先设定的阀值,那么近期使用次数最少的图片会被回收掉。所以首先要设置图片内存大小,然后设置LruCache里面的键值对,URL和图片,重写sizeOf,返回图片数量。

4. android 2.3以后GCC会更加倾向于回收软引用或者弱引用的对象,但是也不能缓存到本地,缓存到本地会容易造成OOM,所以最好是LruCache缓存,设定阀值,超过了就回收。

android内存优化之图片压缩和缓存的更多相关文章

  1. Android 图片内存优化与图片压缩

    1. 对图片本身进行操作 尽量不要使用 setImageBitmap.setImageResource. BitmapFactory.decodeResource 来设置一张大图,因为这些方法在完成 ...

  2. Android性能优化之图片压缩优化

    1 分类Android图片压缩结合多种压缩方式,常用的有尺寸压缩.质量压缩.采样率压缩以及通过JNI调用libjpeg库来进行压缩. 参考此方法:Android-BitherCompress 备注:对 ...

  3. 大礼包!ANDROID内存优化(大汇总)

    写在最前: 本文的思路主要借鉴了2014年AnDevCon开发者大会的一个演讲PPT,加上把网上搜集的各种内存零散知识点进行汇总.挑选.简化后整理而成. 所以我将本文定义为一个工具类的文章,如果你在A ...

  4. ANDROID内存优化——大汇总(转)

    原文作者博客:转载请注明本文出自大苞米的博客(http://blog.csdn.net/a396901990),谢谢支持! ANDROID内存优化(大汇总——上) 写在最前: 本文的思路主要借鉴了20 ...

  5. 【腾讯Bugly干货分享】Android内存优化总结&实践

    本文来自于腾讯Bugly公众号(weixinBugly),未经作者同意,请勿转载,原文地址:https://mp.weixin.qq.com/s/2MsEAR9pQfMr1Sfs7cPdWQ 导语 智 ...

  6. ANDROID内存优化(大汇总——全)

    写在最前: 本文的思路主要借鉴了2014年AnDevCon开发者大会的一个演讲PPT,加上把网上搜集的各种内存零散知识点进行汇总.挑选.简化后整理而成. 所以我将本文定义为一个工具类的文章,如果你在A ...

  7. ANDROID内存优化(大汇总——中)

    转载请注明本文出自大苞米的博客(http://blog.csdn.net/a396901990),谢谢支持! 写在最前: 本文的思路主要借鉴了2014年AnDevCon开发者大会的一个演讲PPT,加上 ...

  8. Android 性能优化——之图片的优化

    Android 性能优化——之图片的优化 在Android性能优化中,我们会发现占内存最大的和对性能影响最大的往往是图片资源,其次是控件资源.相对来说,其他的资源的影响会小一点.这里我就先对图片资源的 ...

  9. Android内存优化大全(中)

    转载请注明本文出自大苞米的博客(http://blog.csdn.net/a396901990),谢谢支持! 写在最前: 本文的思路主要借鉴了2014年AnDevCon开发者大会的一个演讲PPT,加上 ...

随机推荐

  1. Path对象

    Path是连续的Segment的集合,除了 Path 的第一个Segment和最后一个Segment外,其余的Segment的起始点都是前一个Segment的终止点,即Path对象的中的Segment ...

  2. jQuery选择器全解

    本篇介绍jQuery的选择器,jQuery选择器按照功能上分为"选择"和"过滤",并且是配合使用的.过滤的主要作用是从前面选定的选择器中选择的内容重进行筛选. ...

  3. 打开较大存储量的.sql文件时,出现SQL Server 阻止了对组件 'xp_cmdshell' 的 过程'sys.xp_cmdshell' 的访问

    1. “消息 15281,级别 16,状态 1,过程 xp_cmdshell,第 1 行SQL Server 阻止了对组件 'xp_cmdshell' 的 过程'sys.xp_cmdshell' 的访 ...

  4. web标准(复习)--5 超链接伪类

    今天我们开始学习超链接伪类,包含以下内容和知识点: 链接的四种样式 将链接转换为块状 用css制作按钮 首字下沉 一.超链接的四种样式 超链接可以说是网页发展史上一个伟大的发明,它使得许多页面相互链接 ...

  5. CSS应用五

    1. 页面变灰 html {   filter: grayscale(100%);//IE浏览器   -webkit-filter: grayscale(100%);//谷歌浏览器   -moz-fi ...

  6. NET Core依赖注入解读&使用Autofac替代实现

    NET Core依赖注入解读&使用Autofac替代实现 标签: 依赖注入 Autofac ASPNETCore ASP.NET Core依赖注入解读&使用Autofac替代实现 1. ...

  7. tomcat文件夹与文件解析

    今天看到一篇不错的文章,如下: /bin:存放启动和关闭tomcat的脚本文件: /conf:存放tomcat的各种配置文件,比如:server.xml/ server/lib:存放tomcat服务器 ...

  8. activiti 5.17 流程图中文乱码问题

    1. 流程图中任务中的中文乱码显示问题.   解决方法:设置processEngineConfiguration中的两个字体属性,例如: <bean id="processEngine ...

  9. Qt编程之数据流图(dataflow diagram)的编写

    不知道怎么搞. 在网上搜了一些资料,说是有提供的Demo样例 https://forum.qt.io/topic/18472/dataflow-programming-gui/4 http://sta ...

  10. expect 传参

    AAAAAAAAA(A)/app/cbsrun/sbin> cat reloadtuxconfig.exp puts "Start" set i 1 set max_i [l ...