图片加载利器Fresco

  • Fresco是Facebook开源的一个图片加载库
  • 项目地址:Fresco
  • 使用简单
  • 使用教程
  • 基于控件级别的图片库
  • 能显著优化APP因图片过大而占过多的内存

图片加载利器Fresco_第1张图片
Fresco_Image.png

Fresco的核心技术:

  1. Fresco的原理是:设计一个ImagePipeline的概念,它负责先后检查内存,磁盘文件,如果能够取出图片则取用之,反之再去从网络下载图片,并缓存。
  2. Fresco有三个线程,其中3个线程用于从网络下载图片,2两线程用于磁盘文件的读写,还有2个线程用于CPU的相关操作,比如图片解码,转换以及放在后台执行的一些费时操作。
  3. Fresco的三层缓存技术是其最核心 的技术,它比其他图片SDK吃内存小,也正是得利于这个全新的缓存设计。
  • 第一层:Bitmap缓存
    • 在Android5.0系统中,考虑到内存管理有了很大改进,所以Bitmap缓存位于Java堆(heap)中。
    • 而在Android4.X和更低的系统中,Bitmap缓存位于ashmem中,而不是位于Java的堆中,这意味着图片的创建和回收不会引发过多的GC,从而让APP运行的更快。
    • 当APP切换到后台时,Bitmap缓存会被清空。
  • 第二层内存缓存
    • 内存缓存中存储了图片的原始压缩格式。从内存缓存中取出的图片,在显示前必须先解码。
    • 当APP切换到后台后,内存缓存也被清空。
  • 第三层: 磁盘缓存
    • 磁盘缓存也称为本地缓存。
    • 磁盘缓存中存储的图片也是原始压缩格式,在使用时需先解码。
    • 当APP切换到后台时,磁盘缓存不会丢失,即使关机也不会丢失。

你可能感兴趣的:(图片加载利器Fresco)