相关视频:Bitmap高效缓存
0、相关文章:
Bitmap源码解析与优化(阅读量58,详细)
深入了解Bitmap源码解析及经验总结(阅读量3000,详细)
Bitmap的基本概念:
- Bitmap,位图。它不是Android中特有的概念,它是计算机图形学的一个概念。它的主要作用就是把图片转换为像素信息加载到内存中。然后我们就可以对这些像素信息进行操作,从而实现我们的需求。
- Bitmap是Android系统中图像处理最重要的类之一。
- 通过Android我们可以获取到图片的信息:宽的像素值、高的像素值等;
- 获取到信息后,可以对其进行缩放、裁剪等操作;
- 总结:Bitmap为我们程序员提供了对图像文件的操作支持,就像File类为我们提供了对本地文件操作一样。
Bitmap的加载方式:
decode 译(码),解(码);
- BitmapFactory.decodeByteArray();字节数组
- BitmapFactory.decodeFile();文件路径
- BitmapFactory.decodeResource();资源ID
- BitmapFactory.decodeStream();流
如何高效加载Bitmap:
为什么要高效加载Bitmap?
- 1、防止内存溢出
- 2、尽可能的节省内存开销
- 3、使我们的应用跑的更加的流畅
理论依据:BitmapFactory.Options这个类为我们的高效加载提供了可能,这个类有以下几个重要属性:
inJustDecodeBounds: 布尔值,如果设置为true,那么我们在BitmapFactory.decode的时候,就不会返回bitmap,而是返回bitmap的width和height,并把width和height存放到outWidth&outHeight中。
inSampleSize:采样率。通过采样率我们可以极大地减少图片所占用的内存。
Android缓存
1、缓存的概念;
缓存就是将从服务器请求到的数据(Json,File)等保存到本地。
2、缓存常见的使用场景和优势;
优势:
- 1、对一些不是经常发生变化的数据,直接使用本地缓存,提升应用响应速度;
- 2、不再频繁地请求服务器,可以降低服务器的负载压力;
- 3、一些特定场景下的使用,例如:离线阅读;
常见使用场景:
- 1、对bitmap和file等大数据进行缓存,无需每次都重新下载,尤其是ListView;
- 2、数据更新不需要实时更新,采用缓存机制。
3、缓存策略;
- 1、android LruCache实现内存缓存;
- 2、android DiskLruCache实现硬盘缓存;
- 3、SQLite实现缓存(不重要,SQLite主要用来实现持久化数据存储,缓存会被清理掉)
LruCache
1、LruCache缓存的概念:
- 1、Lru是计算机科学经常使用的一种近期最少使用算法;
- 2、LruCache内部采用的是LinkedHashMap,LruCache就是对LinkedHashMap的增删改查加了一层封装;
- 3、LruCache的出现是为了取代SoftReference。在Android3.0以前,图片缓存使用的就是SoftReference,但在Android3.0以后,虚拟机更倾向于回收SoftReference,所以使用LruCache来取代它。
2、使用中要注意的问题:
- 1、内存缓存使用的还是我们宝贵的内存,所以要根据系统动态调整大小。
- 2、注意版本适配,尽量使用support-v4中的LruCache。
DiskLruCache
硬盘缓存,优酷和今日头条就是用这个进行的离线缓存。