www.4258333.com,新铁算盘,通宝高手论坛,毛泽西心水论坛,www.492678.com

www.4258333.com,新铁算盘,通宝高手论坛,毛泽西心水论坛,www.492678.com,刘伯温开奖结果,六合精准一肖,六盒宝典大全一肖中特

图片框架对比

2019-10-29 14:15

  Fresco是Facebook开源Android平台上一个强大的图片加载库,也是迄今为止Android平台上最强大的图片加载库。

  Fresco最显著的特点是具有三级缓存:两级内存缓存和一级磁盘缓存。他的主要特性如下:

  在Android 4.x和以下的系统上,将图片放在Android内存一个特殊的区域,从而使得应用运行更流畅,同时极大降低出现OutofMemoryError的错误。

  优点:相对于其他开源的第三方图片加载库,Fresco拥有更好的内存管理和强大的功能,基本上能满足所有的日常使用场景。

  缺点:整体比较大,不过目前的版本已做了拆分,你只需要导入你使用到的功能相关的库。从代码层面来说侵入性太强,体现在要使用它需要用Fresco的组件SimpleDraweeView替换掉Android原生图片显示组件ImageView,这也是很多人不愿意在项目中接入Fresco的主要原因。

  解压后的图片,即Android中的Bitmap,占用大量的内存。大的内存占用势必引发更加频繁的GC。在5.0以下,GC将会显著地引发界面卡顿。

  在5.0以下系统,Fresco将图片放到一个特别的内存区域。当然,在图片不显示的时候,占用的内存会自动被释放。这会使得APP更加流畅,减少因图片内存占用而引发的OOM。

  Fresco中设计有一个叫做 Image Pipeline 的模块。它负责从网络,从本地文件系统,本地资源加载图片和管理。为了最大限度节省空间和CPU时间,它含有3级缓存设计(2级内存,1级磁盘)。两个内存缓存为Bitmap缓存和未解码的图片缓存,这样既可以加快图片的加载速度,又能节省内存的占用(解码后的图片就是Bitmap,其占用内存相对未解码的图片数据而言会大很多)。

  a、根据Uri在已解码的(Bitmap缓存)内存缓存中查找,找到了则返回Bitmap对象;如果没找到,则开启后台线程开始后续的工作。

  b、根据Uri在未解码的内存缓存中查找,若找到了则解码,然后缓存到已解码的内存缓存中,并且返回Bitmap对象。

  d、如果在未解码的内存缓存中没找到,则根据Uri在磁盘缓存中查找,若找到了则读取数据(byte数组),并缓存到未解码的内存缓存中,解码、然后缓存到已解码的内存缓存中,并且返回Bitmap对象。

  e、如果在磁盘缓存中没找到,则从网络或者本地加载数据。加载完成后,依次缓存到磁盘缓存、未解码的内存缓存中。解码、04908.com。然后缓存到已解码的内存缓存中,并且返回Bitmap对象。

  Fresco 中设计有一个叫做 Drawees 模块,负责图片的呈现。它由三个元素组成分别是:

  DraweeController 负责和ImagePipeline的交互,可以创建一个这个类的实例,来实现对所要显示的图片做更多的控制。

  一般情况下,使用 SimpleDraweeView 即可,你可以配置其XML属性来实现各式各样的展示效果。

  d、加载失败后,它会显示加载失败的图(若没配置加载失败的图,则显示的是占位图)

  e、加载失败后,若配置过重试图,则会显示重试图,用户点击可以重新去加载图片(默认配置可重试3次)

  f、自定义居中焦点(配合Google提供的服务可以实现人脸识别,经测试国内目前使用不了)

  在泰国举行的谷歌开发者论坛上,谷歌为我们介绍了一个名叫Glide的图片加载库,作者是bumptech。这个库被广泛的运用在google的开源项目中,包括2014年google I/O大会上发布的官方app。

  Glide和Picasso有90%的相似度,准确的说,就是Picasso的克隆版本。但是在细节上还是有不少区别的。

  Picasso和Glide在磁盘缓存策略上有很大的不同。Picasso缓存的是全尺寸的,而Glide缓存的是跟ImageView尺寸相同的。

  因为Glide和Activity/Fragment的生命周期是一致的,因此gif的动画也会自动的随着Activity/Fragment的状态暂停、重放。Glide 的缓存在gif这里也是一样,调整大小然后缓存。

  多种图片格式的缓存,适用于更多的内容表现形式(如Gif、六合居士论坛,WebP、缩略图、Video)

  生命周期集成(根据Activity或者Fragment的生命周期管理图片加载请求)

  高效处理Bitmap(bitmap的复用和主动回收,减少系统回收压力)

  高效的缓存策略,灵活(Picasso只会缓存原始尺寸的图片,Glide缓存的是多种规格),加载速度快且内存开销小(默认Bitmap格式的不同,使得内存开销是Picasso的一半)

  经过对比,对于加载跟动图加载,因为Picasso不能加载动图,所以就只需啊哟考虑另外两个了。首先Fresco虽然很强大,但是包很大,依赖很多,使用复杂,并且使用专有的控件SimpleDraweeView来加载图片。Glide使用简单,配置方便,而且从加载速度和性能方面不相上下。对于轻小量级的app来说使用glide比更好的能够符合要求,如果考虑性能更专业图片来讲,推荐使用fresco

  PS:根据业务需求采用不能的框架选择,不建议一个项目中使用多种加载框架。

  7.1 压缩图片 一、基础知识 1、图片的格式 jpg:最常见的图片格式。色彩还原度比较好,可以支持适当压缩后保持...

  【Android 库 图片库比较】 四大图片库比较 四大图片缓存基本信息 Universal ImageLoade...

  目前三大图片加载框架 Picasso Glide Fresco Picasso 和Square的网络库一起能发挥最...

  关于网络加载已经写完了,今天来给大家分享一下关于图像加载的知识,在开发中除了请求数据怎么显示之外,剩下的 最...

网站统计

六和透码| 一线图库彩图管家婆| 心水资料玄机站网址| 大聚会心水论坛| 好运来心水论坛| 聚宝盆香港马会开奖结果| 黄大仙一肖中特网站| 六和高手论坛| 好心水高手坛| 天将图库手机专用看图区|