Glide
什么是Glide
Glide是一个快速高效的Android图片加载库,具备性能高,流式API的语法特点。
优势
- 可配度高,自适应度高;
- 支持多种数据源,本地,网络,assets,gif都支持;
- 高效缓存,支持memory和disk图片缓存,默认使用二级缓存;
- 生命周期集成到Glide(其他图片网络框架不可逾越的);
- 高效处理Bitmap:使用Bitmap pool复用Bitmap;
- 图片加载过程可以监听。

Glide模拟


二级缓存

生命周期
Fresco等框架:二级缓存的图片管理:加载的图片会放在手机里的内存里面(内存的1/8的内存区域),当内存图片满了的时候,最早使用的内存回收,然后再将新的图片放进去。劣势:当Activity的destroy之后,图片还在内存里面不会被回收,只有GC的时候才会被回收。
Glide
1.会对每个Activity加一个空的没有UI的Fragment:RequestManagerFragment
2.因为空白fragment和创建他的Activity的生命周期是一致的,其可以感知Activity的生命周期,将生命周期传递给RequestManager,从而对Request进行管理。
几个核心类介绍
通过对Glide生命周期绑定和传递整个流程过了一遍之后,大家应该对整体实现的框架有一定的了解。现在再来看下面一些核心类的介绍,应该更加有感触。
Glide:库提供对外调用方法的类,传入页面引用。
RequestManagerRetriever:一个处理中间类,获取RequestManager和RequestManagerFragment,并将两者绑定
RequestManagerFragment:无UI的fragment,与RequestManager绑定,感知并传递页面的生命周期
RequestManager:实现了LifeCycleListener,主要作用为结合Activity或Fragment生命周期,对Request进行管理,如pauseRequests(), resumeRequests(), clearRequests()。
LifecycleListener:接口,定义生命周期管理方法,onStart(), onStop(), onDestroy(). RequestManager实现了它。
ActivityFragmentLifecycle:保存fragment和Requestmanager映射关系的类,管理LifecycleListener, 空白Fragment会回调它的onStart(), onStop(), onDestroy()。