public void setImageURI(Uri uri, @Nullable Object callerContext) { DraweeController controller = mSimpleDraweeControllerBuilder .setCallerContext(callerContext) .setUri(uri) .setOldController(getController()) .build(); setController(controller); ---->attachController--->subscribe
AbstractDraweeControllerBuilder
buildController() { AbstractDraweeController controller = obtainController();
PipelineDraweeController
obtainController(){ .... newController( obtainDataSourceSupplier(), generateUniqueControllerId(), getCallerContext()); obtainDataSourceSupplier()
AbstractDraweeControllerBuilder
obtainDataSourceSupplier() .... getDataSourceSupplierForRequest(imageRequest, /* bitmapCacheOnly */ false);
PipelineDraweeControllerBuilder
protected DataSource> getDataSourceForRequest( ImageRequest imageRequest, Object callerContext, boolean bitmapCacheOnly) { if (bitmapCacheOnly) { return mImagePipeline.fetchImageFromBitmapCache(imageRequest, callerContext); } else { return mImagePipeline.fetchDecodedImage(imageRequest, callerContext); }
ImagePipeline
submitFetchRequest
DecodeProducer
produceResults ..... mJobScheduler.scheduleJob();