我们今天来了解下Fresco的初始化过程。
以系统默认的初始化参数为例。
Fresco.initialize(getApplicationContext());
进入到 com.facebook.drawee.backends.pipeline.Fresco中
public static void initialize(Context context) {
ImagePipelineFactory.initialize(context);
initializeDrawee(context);
}
我们先看ImagePipelineFactory.initialize(context);方法
public static void initialize(Context context) {
initialize(ImagePipelineConfig.newBuilder(context).build());
}
我们继续看ImagePipelineConfig.newBuilder(context)方法,
public static ImagePipelineConfig.Builder newBuilder(Context context) {
return new ImagePipelineConfig.Builder(context, null);
}
这里调用了ImagePipelineCongif的一个内部类Builder。
private Builder(Context context) {
this.mDownsampleEnabled = false;
this.mResizeAndRotateEnabledForNetwork = true;
this.mContext = (Context)Preconditions.checkNotNull(context);
}
这里只初始化了3个参数。其他的一些相关的参数并没有在这里进行初始化,那么,其他的一些设置是怎么实现的呢。别着急,我们接下来看
ImagePipelineConfig.newBuilder(context).build()的build()方法。
public ImagePipelineConfig build() {
return new ImagePipelineConfig(this, null);
}
这里返回了ImagePipelineConfig的一个实例。我们看下他的构造函数吧。