图片会说话系列之Android图片缓存框架

前言:看过很多精彩的文章,作者写的非常好,但总觉得文字描述没有图片或图表说明来得直观,因为图片可以化抽象为具体。语言是有区域性的,而图片则是全世界通用的,即使语言不通,却能通过图片了解一切。因此想做一个系列的简博客,内容就是一张图附带一些必要的说明,这样就能迅速抓住重点,而不需要做太多的阅读,便能了解框架性的东西。文章所涉及到的图片有的可能来自官方网站,有的来自名家博客,或者是自己绘制的,都会一一说明。

切入正题,先来第一发,上图:

上图来自:https://github.com/nostra13/Android-Universal-Image-Loader

这就是著名的开源库Android-Universal-Image-Loader的图片处理流程图。

简要说明:

1.图片缓存分为内存缓存和磁盘缓存两部分。

2.显示图片时,先从内存缓存读起,如果在内存缓存找到了,则直接显示图片。

3.如果内存缓存没有,则在磁盘缓存查找,如果找到,则将其编码为Bitmap,然后对图片进行预处理,将其缓存到内存,最后显示图片。

4.如果内存缓存和磁盘缓存都没有找到图片,则去下载图片,下载完之后缓存到磁盘,然后将其编码为Bitmap,对图片进行预处理,再将其缓存到内存,最后显示图片。

Android图片缓存框架有很多,原理都大同小异,基本都是上述逻辑,大家可以举一反三,或者按上述流程写自己的图片缓存框架。

时间: 2024-10-18 18:54:52

图片会说话系列之Android图片缓存框架的相关文章

图片会说话系列之Android事件的分发传递机制

在一些复杂布局中,经常会遇到事件冲突,事件失效等问题,这就需要我们深入理解Android事件的分发传递机制.最好的方法是自己写一个demo,打印事件相关的日志查看其运行流程,然后再结合源码去深入理解.当然这里不会做这些,这里只有总结性的东西,如果你喜欢这种东西,那么请继续往下看. 老规矩,先上图: 用户的交互一般发生在触摸屏上,因此Android事件的传递必然涉及到ViewGroup和View,ViewGroup与View包含的处理事件传递的方法分别如下: ViewGroup: <span st

android轻量级缓存框架ASimpleCache分析

框架地址 https://github.com/yangfuhai/ASimpleCache  此框架作者为大名鼎鼎的afinal作者 官方简介: ASimpleCache 是一个为android制定的 轻量级的 开源缓存框架.轻量到只有一个java文件(由十几个类精简而来). (有个问题是作者所说的自动失效,其实是在获取数据时判断存入缓存的数据是否过期,如果过期,则删除数据缓存,返回null.当然,如果真正的自动删除,应该只能开启服务,不断判断是否过期来删除吧,也没有必要) ---------

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图片特效处理之怀旧效果

图片特效处理系列将介绍图片的像素点的特效处理,这些物资注重的是原理.也就是说只要你知道这些算法不管是C++,VB,C#,JAVA都可以做出相同的特效.下面将介绍图片怀旧效果的算法.算法如下: 上面公式的意思是说将每个像素点的RGB值先分离出来,然后再按照上面的三个算式分别重新计算出RGB值然后做为当前点的RGB值. 下面看效果图片: 原图片: 处理后: 代码: /** * 怀旧效果(相对之前做了优化快一倍) * @param bmp * @return */ private Bitmap old

android图片特效处理之怀旧效果

图片特效处理系列将介绍图片的像素点的特效处理,这些物资注重的是原理.也就是说只要你知道这些算法不管是C++,VB,C#,Java都可以做出相同的特效.下面将介绍图片怀旧效果的算法.算法如下: 上面公式的意思是说将每个像素点的RGB值先分离出来,然后再按照上面的三个算式分别重新计算出RGB值然后做为当前点的RGB值. 下面看效果图片: 原图片: 处理后: 代码: [java] view plain copy /** * 怀旧效果(相对之前做了优化快一倍) * @param bmp * @retur

25类Android常用开源框架

1.图片加载,缓存,处理 框架名称 功能描述 Android Universal Image Loader 一个强大的加载,缓存,展示图片的库,已过时 Picasso 一个强大的图片下载与缓存的库 Fresco 一个用于管理图像和他们使用的内存的库 Glide 一个图片加载和缓存的库,使用的App有:网易新闻 GlidePalette Android Lollipop Palette is now easy to use with Glide PicassoPalette Android Lol

Android批量图片载入经典系列——afinal框架实现图片的异步缓存载入

一.问题描写叙述 在之前的系列文章中,我们使用了Volley和Xutil框架实现图片的缓存载入,接下来我们再介绍一下afinal 框架的使用. Afinal 是一个android的http框架.sqlite orm 和 ioc 框架.使其更加简单易用,Afinal的宗旨是简洁,高速.约定配置的方式之后,尽量一行代码完毕全部事情,代码入侵性小,在三者中比較推荐.在这里我们主要使用http框架的 FinalHttp和FinalBitmap组件实现网络图片的载入 案例介绍--实现图片新闻浏览: 二.案

Android图片缓存分析(一)

Android中写应用时,经常会遇到加载图片的事,由于很多图片是网络上下载获取的,当我们进页面时,便会去网络下载图片,一两次可能没啥问题,但如果同一张图片每次都去网络拉取,不仅速度慢,更影响用户体验,同时会浪费用户的流量. 基于此,很多人便想到了图片缓存的方法. 现在比较普遍的图片缓存主要有以下几个步骤: 一.从缓存中获取图片 二.如果缓存中未获取图片,则从存储卡中获取 三.如果存储卡中未获取图片,则从网络中获取 一.从缓存中获取图片 我们知道,Android中分配给每个应用的内存空间是有限的,

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

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