首页 > 学院 > 开发设计 > 正文

Picasso 修改缓存路径

2019-11-09 14:57:41
字体:
来源:转载
供稿:网友

Picasso 是 Square 公司开源的一个非常友好的图片加载框架,使用范围也比较广泛。具体的使用这里就不做介绍了,文章主要讲讲如何修改图片的缓存路径。Picasso默认的缓存路径位于data/data/your package name/cache/picasso-cache/下。开发过程中我们难免会遇到一些需求,需要我们去修改图片的缓存路径。

分析

我们注意到,Picasso 底层其实是使用OkHttp去下载图片,同时在设置Picasso的时候,有一个.downloader(Downloader downloader)方法,我们可以传递进去一个OkHttpDownloader( OkHttpClient client)

Picasso picasso = new Picasso.Builder(Context) .downloader(new OkHttpDownloader(client)) .build();

看到这里你可能已经想到了,我们给OkHttpClient设置Cache不就可以了吗,对,你没有猜错,实际就是这么干的。我们只需要给OkHttpClient设置.cache(new Cache(file, maxSize))就可以实现修改缓存路径了。

实现

废话不多说,直接上代码:

File file = new File("your cache path"); if (!file.exists()) { file.mkdirs(); } long maxSize = Runtime.getRuntime().maxMemory() / 8;//设置图片缓存大小为运行时缓存的八分之一 OkHttpClient client = new OkHttpClient.Builder() .cache(new Cache(file, maxSize)) .build(); Picasso picasso = new Picasso.Builder(this) .downloader(new OkHttpDownloader(client)) .build();

没错就是这么简单,几行代码,你便成功的修改了缓存路径。但是。。。。,当你把OkHttp升级到OkHttp3的时候,你会发现给downloader设置OkHttpDownloader()的时候,发现它并不支持OkHttp3,这不是 shit 吗,不能因为这一个小问题,让我把OkHttp3替换成低版本吧。其实这是有办法解决的。

使用 OkHttp3Downloader

为了解决上面描述的不能使用OkHttp3作为下载器的问题,Picasso作者jakewharton大神专门写了一个OkHttp3Downloader库。使用也非常简单,在Module dependencies添加依赖:

compile 'com.jakewharton.picasso:picasso2-okhttp3-downloader:1.1.0'

然后设置downloader的时候改为OkHttp3Downloader即可:

File file = new File("your cache path"); if (!file.exists()) { file.mkdirs(); } long maxSize = Runtime.getRuntime().maxMemory() / 8;//设置图片缓存大小为运行时缓存的八分之一 OkHttpClient client = new OkHttpClient.Builder() .cache(new Cache(file, maxSize)) .build(); Picasso picasso = new Picasso.Builder(this) .downloader(new OkHttp3Downloader(client))//注意此处替换为 OkHttp3Downloader .build();

至此,我们就完成了Picasso缓存路径的修改。


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表