android图片的缓存--节约内存提高程序效率

现在android应用占内存一个比一个大,android程序的质量亟待提高。

这里简单说说网络图片的缓存,我这边就简单的说说思路

1:网络图片,无疑需要去下载图片,我们不需要每次都去下载。

维护一张表,表里面放url 对应 存储的文件名

实现方法就是先拿到要下载的url,拿这个url去数据库匹配,如果有这张图片,那就不需要重新去下载了,直接通过数据库,去拿到图片的位置,然后从本地把图片加载出来就OK了。没有这张图片的时候去下载一下,并且存一下数据库

好处:这么做的好处很明显,下载过的图片不需要重新去下载,也节约了本地的空间,下载多张同样的图片放本地也不是好事儿。

2:图片资源的内存处理,一张图片需要在多个地方显示,例如自己头像,需要在很多地方显示,不需要每个地方都去加载这张图片,这样会浪费很多资源。

实现方法,在内存里维护一个Bitmap的 MAP,key放url,value放这个Bitmap   我们拿到一个url,先看内存里是否有这张图片,有就直接从拿出来用。

好处 :bitmap是很占内存的,重用它可以节约很多内存,其次从本地加载图片也是需要消耗资源的,每张图片只要加载一次,这样是不是就好很多了呢。

做到这两点,图片这块的效率可以看到明显的多了很多,OOM神马的我就不说了,写这个希望大家对大家程序优化会有一些帮助,至于这个工具类有空的时候再写吧,网上也有不少,写这篇博客就还想看看能不能弄几个C币,最近挺忙,也没时间好好写博客,大致写个混混个C币,对大家应该也会是有些许帮助的

时间: 2024-08-07 08:24:55

android图片的缓存--节约内存提高程序效率的相关文章

毕加索的艺术——Picasso,一个强大的Android图片下载缓存库,OkHttpUtils的使用,二次封装PicassoUtils实现微信精选

毕加索的艺术--Picasso,一个强大的Android图片下载缓存库,OkHttpUtils的使用,二次封装PicassoUtils实现微信精选 官网: http://square.github.io/picasso/ 我们在上篇OkHttp的时候说过这个Picasso,学名毕加索,是Square公司开源的一个Android图形缓存库,而且使用起来也是非常的简单,只要一行代码就轻松搞定了,你会问,为什么不介绍一下Glide?其实Glide我有时间也是会介绍的,刚好上篇我们用到了Picasso,

Android图片三级缓存策略

1.简介 Android缓存原理都是一样,可以自己封装. 三级缓存: 1.内存缓存:缓存在内存中,基于LRU(least recently used )算法,机器重启消失. 2.本地缓存.缓存在本地中.一般键值对形式.(url,filepath) 3.网络缓存.从网络加载资源,然后缓存在内存.本地中. 2.实现步骤 2.1 内存缓存: [java] view plain copypublic class MemoryCacheUtils { private LruCache<String,Bit

Android图片二级缓存

点击下载源代码 想起刚開始写代码的时候,领导叫我写一个头像下载的方法,当时屁颠屁颠就写了一个图片下载的,每次都要去网络上请求,最后直接被pass掉了 当时的思路是这种 后来渐渐地就知道了有二级缓存这东西. 自己也阅读过非常多关于双缓存的文章. APP开发到越后面.对性能的要求越高.那么双缓存的优势就逐渐体现出来了. 所谓图片双缓存.首先到执行内存中请求,再到sd卡请求,最后到网络请求,流程图例如以下 那我们从第一部開始解析 1.先看 内存缓存的代码 [java] view plaincopy p

C与C++中的常用提高程序效率的方法

1.用a++和++a及a+=1代替a=a+1,用a--和--a及a-=1代替a=a-1 通常使用若把一个函数定义为内联函数,则在程序编译阶段,编译器就会把每次调用该函数的地方都直接替换为该函数体中的代码,因此省却了函数的调用及相应的保护现场.参数传递和返回等操作,从而加快了整个程序的执行速度.总之,存储单元.声明一个引用,不是新定义了一个变量,它只表示该引用名是目标变量名的一个别名,它本身不是一种数据类型,因此引用本身不占存储单元,系统也不给引用分配存储单元.所以引用传递是比非引用传递快的. 而

汉字转拼音 敏感词过滤 禁用词查找 提高程序效率另外一种思路:反向思维

汉字转拼音 敏感词过滤 禁用词查找 这些很常用的互联网需求 大家出道时是怎么做的? 大家偷懒时是怎么做的? 常规算法 - 从数据库到用户提交内容去匹配: 把数据库中所有数据压到大数组中(这时数据越多,与数据库连接时间越长) 根据用户提交的内容对大数组进行foreach(这时数据越多,占有服务器内存越大) 根据上述结果,进行相应的返回.处理(这时数据越多,与数据库连接时间越长) 优点: 逻辑简单,实施方便,开发成本低,人算素质要求低 缺点: 程序效率低,数据库压力大,速度慢 有bug,比如数据库中

picasso-强大的Android图片下载缓存库

编辑推荐:稀土掘金,这是一个针对技术开发者的一个应用,你可以在掘金上获取最新最优质的技术干货,不仅仅是Android知识.前端.后端以至于产品和设计都有涉猎,想成为全栈工程师的朋友不要错过! picasso是Square公司开源的一个Android图形缓存库,地址http://square.github.io/picasso/,可以实现图片下载和缓存功能.仅仅只需要一行代码就能完全实现图片的异步加载: Picasso.with(context).load("http://i.imgur.com/

picasso_强大的Android图片下载缓存库

picasso是Square公司开源的一个Android图形缓存库,地址http://square.github.io/picasso/,可以实现图片下载和缓存功能.仅仅只需要一行代码就能完全实现图片的异步加载: 1 Picasso.with(context).load("http://i.imgur.com/DvpvklR.png").into(imageView); Api看起来非常独特,是吧. Picasso不仅实现了图片异步加载的功能,还解决了android中加载图片时需要解决

如何使用picasso 对Android图片下载缓存

相比较其他,picasso的图片缓存更加简单一些,他只需要一行代码就可以表述:导入相关jar包 Picasso.with(context).load("图片路径").into(ImageView控件); listView加载图片,在现在的app中都是非常常见的,我们往往要处理图片加载缓慢,错位等常见问题.Picasso不仅实现了图片的异步加载,同时对一些问题也做了解决和优化 比如:1.当在listView,滑动的时候,我们需要在adapter中把已经不再视野的ImageView图片资源

Android 图片三级缓存加载框架原理解析与代码实现

本文主要介绍三级缓存的原理解析与实现方式.以前一直觉得三级缓存图片加载是一个很难理解的东西,但是自己看了一下午再试着写了一遍之后感觉还是只要沉下心思考还时很容易熟悉掌握的. 所谓三级缓存:首先是内存-文件(外存)-网络三级缓存机制. 首先: 框架需要一个接入方法NGImageloadHelper.java: /** * 图片加载框架使用帮助类 * Created by nangua on 2016/7/8. */ public class NGImageloadHelper { /** * 处理