美文网首页
Picasso 图片加载库源码分析2-图片下载器

Picasso 图片加载库源码分析2-图片下载器

作者: jkwen | 来源:发表于2021-07-01 07:38 被阅读0次

从下载机制说起,默认实现类是 OkHttp3Downloader,显然采用 OkHttp 去下载图片了。 OkHttp3Downloader 对象的创建需要一个缓存路径,这个路径选用了 ApplicationContext 的 getCacheDir 路径。除了路径,还需要知道缓存空间的大小,这个空间介于 5 ~ 50 MB。

public OkHttp3Downloader(final File cacheDir, final long maxSize) {
    this(new OkHttpClient.Builder().cache(new Cache(cacheDir, maxSize)).build());
    sharedClient = false;
}

最后会调用这个构造方法,新建了一个 OkHttpClient 对象,并设置缓存,缓存配置就是前面说的。并且指明这个 OkHttpClient 对象不被共享,也就是相当于 Picasso 专用。

load

@Override public Response load(@NonNull Request request) throws IOException {
    return client.newCall(request).execute();
}

OkHttp3Downloader 对 load 方法的实现其实就是利用 OkHttpClient 去发起一个请求。

shutdown

public void shutdown() {
    if (!sharedClient && cache != null) {
        try {
            cache.close();
        } catch (IOException ignored) {}
    }
}

shutdown 的实现主要做了 cache.close 操作,这个 cache 是 okhttp3 包里的类,在创建时会通过 DiskLruCache 类来创建一个 DiskLruCache 对象,close 方法也正是调用了 DiskLruCache 对象的 close 方法,简单看应该是停止并清空缓存。

相关文章

网友评论

      本文标题:Picasso 图片加载库源码分析2-图片下载器

      本文链接:https://www.haomeiwen.com/subject/yqtjultx.html