项目图片加载框架换成了Fresco,都说功能很强大,拿出了一些时间分析了一下源码,特此总结一下,由于能力有限,有分析不对的地方,欢迎大神指正。
Fresco官方文档 https://www.fresco-cn.org/docs/
源码地址:https://github.com/dingys/FrescoLib.git
Fresco源码整体架构是一个非常标准的MVC,不过现在主流的架构应该是MVP,不过多了解一些东西也不是啥坏事。除此之外Fresco源码还使用了工厂模式,管道,构建者模式,Producer等模式,当然肯定还有一些我不知道的设计模式。里面中定义了大量的抽象类和接口,刚开始看代码的时候跟着一个方法跳来跳去,一会儿自己都懵逼了,所以大家建议大家先了解一下每个类的用处,和它们的继承关系。
分析源码一般都是从入口开始,这次也不例外,从初始化开始。
Fresco初始化
通常会在程序Appliction onCreate方法初始化,Fresco提供了两个构造方法:
public static void initialize(Context context) {
ImagePipelineFactory.initialize(context);
initializeDrawee(context);
}
public static void initialize(Context context, ImagePipelineConfig config) {
ImagePipelineFactory.initialize(config);
initializeDrawee(context);
}
通常调用一个参数的构造方法,想自定义Fresco的配置时可调用两个参数的构造方法。
两个构造方法都实例化了一个ImagePipelineFactory,从类名看,这是一个创建ImagePipeline的工厂,ImagePipeline是啥可以先不要先纠结,看ImagePipelineFactory类的注释:
/**
* Factory class for the image pipeline.
* 生产Image Pipeline的工厂类
* This class constructs the