fresco研究

SimpleDraweeView
  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();

猜你喜欢

转载自ccsosnfs.iteye.com/blog/2222411
今日推荐