Picasso源码分析


一张图片加载可以分为以下几步:
创建->入队->执行->解码->变换->批处理->完成->分发->显示(可选)

涉及到的设计模式
1.单例
2.Builder
3.责任链模式

static BitmapHunter forRequest(Picasso picasso, Dispatcher dispatcher, Cache cache, Stats stats,
    Action action) {
  Request request = action.getRequest();
  List<RequestHandler> requestHandlers = picasso.getRequestHandlers();

  //从requestHandlers中检测哪个RequestHandler可以处理这个request,如果找到就创建
  //BitmapHunter并返回.
  for (int i = 0, count = requestHandlers.size(); i < count; i++) {
    RequestHandler requestHandler = requestHandlers.get(i);
    if (requestHandler.canHandleRequest(request)) {
      return new BitmapHunter(picasso, dispatcher, cache, stats, action, requestHandler);
    }
  }

  return new BitmapHunter(picasso, dispatcher, cache, stats, action, ERRORING_HANDLER);
}

  1. private Downloader downloader;
    此对象是用来下载网络上的图片
  • private Cache cache;
    cache对象把图片资源缓存在内存当中,内存容量是有大小限制的,但超过限制的时候,会消除最老的图片资源
    LinkedHashMap<String, Bitmap>中保存Bitmap的一个对象引用。
  • private ExecutorService service;
    线程池,用来下载图片和解析图片的。
  • private RequestTransformer transformer;
    对图片资源进行变换操作。
  • Stats stats
    状态通知中心,通知状态的完成情况。
  • Dispatcher dispatcher
    操作管理中心,可以用来管理操作的执行,可以取消操作。
    把他们集合起来,就是
    return new Picasso(context, dispatcher, cache, listener, transformer, stats,
    indicatorsEnabled, loggingEnabled);

Picasso源代码分析

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • Picasso,看的版本是v.2.5.2 使用方法,大概这么几种加载资源的形式 还可以对图片进行一些操作:设置大小...
    Jinjins1129阅读 2,828评论 0 3
  • 概述 在Android开发界,大家都知到square出品必属精品,图片加载库Picasso自然也是。本文就从源码角...
    朔野阅读 3,892评论 0 7
  • 前言 大家好,我是小黑(linheimx),一位快乐的2b程序员。 一段简洁的代码 这段代码将 异步的 加载url...
    linheimx阅读 2,999评论 0 2
  • 前一篇文章讲了Picasso的详细用法,Picasso 是一个强大的图片加载缓存框架,一个非常优秀的开源库,学习一...
    依然范特稀西阅读 10,063评论 13 24
  • 待久了与一个人 她发的文字我都能自动脑补出 她念这段话的声音
    辛如音阅读 1,171评论 0 1

友情链接更多精彩内容