自动释放内存!Facebook推出强大Android图片库Fresco_最新动态_新闻资讯_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 新闻资讯 > 最新动态 > 自动释放内存!Facebook推出强大Android图片库Fresco

自动释放内存!Facebook推出强大Android图片库Fresco

 2015/4/1 1:22:43    程序员俱乐部  我要评论(0)
  • 摘要:快速而又高效的显示图片对Android设备来说是件极其重要的事情,但在过去的几年里,在有效存储图像方面我们面临了很多问题。图片太大,而手机又只有很小的内存,特别是Android设备还要将内存分割给各个应用。所以,太多的图片总会耗去大部分的内存,从而导致应用的崩溃。为了解决这一问题,Facebook最近推出了一款用于Android应用中展示图片的强大图片库Fresco,它能够从网络、本地存储和本地资源中加载图片。而且,为了节省数据和CPU,它拥有三级缓存。此外
  • 标签:android Facebook 图片 内存

  快速而又高效的显示图片对 Android 设备来说是件极其重要的事情,但在过去的几年里,在有效存储图像方面我们面临了很多问题。图片太大,而手机又只有很小的内存,特别是 Android 设备还要将内存分割给各个应用。所以,太多的图片总会耗去大部分的内存,从而导致应用的崩溃。 

  为了解决这一问题,Facebook 最近推出了一款用于 Android 应用中展示图片的强大图片库 Fresco,它能够从网络、本地存储和本地资源中加载图片。而且,为了节省数据和 CPU,它拥有三级缓存。此外,Fresco 在显示方面是用了 Drawees,可以显示占位符,直到图片加载完成。而当图片从屏幕上消失时,会自动释放图片所占的内存。Fresco 支持 Android 2.3 及以上版本,目前已托管至 Github 上。

  主要特性: 

  • 内存

  解压后的图片和 Android 的位图都会占据很大的内存,这导致 Java 垃圾收集器更频繁的运行,也让应用变得更加缓慢,这一问题在没有对垃圾收集器进行完善的 Android 5.0 上尤为严重。 

  在 Android 4.x 及以下版本,Fresco 将图片放置在 Android 内存的一个特殊位置。这可以确保当图像不在屏幕上显示时,可以自动释放它们所占的内存。让应用运行的更快速,且不易崩溃。 

  使用 Fresco 的应用,即使在配置低端的设备上也能正常运行,而且你无需经常性地去担心图片的内存占用情况。 

  • Streaming

  Web 上的渐进式(Progressive)JPEG 图片已经存在多年,打开文件过程中,会先显示整个图片的模糊轮廓,随着扫描次数的增加,图片变得越来越清晰。这种格式可以说是网络较慢情况下的救星,通过图片的轮廓知道正在加载的图片大概是什么。 

  Android 自己的图片库不支持 streaming,而 Fresco 可以,只需指定一个 URI,你的应用程序就可以随着数据的到来,自动更新它的显示。 

  • 动画

  动画 GIF 和 WebP 应该是应用的难点,每一帧都是一个大型的位图,而每个动画都是一系列的帧。Fresco 则负责加载和处理这些帧及管理它们的内存。 

  • Drawing

  Fresco 在显示方面使用了 Drawees,Fresco 的 Drawees 能够显示占位符,直到图片已加载,并自动显示到图像到达时: 

  1. 将图片扩展至自定义的焦点,而不是作为处理的中心。 
  2. 使用圆角化或圆形来显示图像。 
  3. 如果网络加载失败的话,用户可以点击占位符重新加载图像。 
  4. 显示自定义背景、浮窗小部件(overlays)或图像上的进度条。 
  5. 当用户点击图片,自定义浮窗小部件。 
  • 加载

  Fresco 的图像管道可以让你以多种方法来自定义加载: 

  1. 为一个图像指定不同的 URI,从中选取一个已经缓存的显示。 
  2. 优先显示低分辨率图像,待数据到达后交换到高的分辨率。 
  3. 如果图像有 EXIF 缩略图,首先显示缩略图,直到整个图片被加载出来(只针对本地图片)。 
  4. 调整或旋转图像。 

  即使是在老版的 Android 上也可以解码 WebP 图像,只不过不是全部支持。 

  传送门:Fresco 官网、Github 托管地址

发表评论
用户名: 匿名