SimpleDraweeView
AbstractDraweeControllerBuilder
PipelineDraweeController
AbstractDraweeControllerBuilder
PipelineDraweeControllerBuilder
ImagePipeline
DecodeProducer
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<CloseableReference<CloseableImage>> 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();