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缓存路径的修改。

Picasso 修改缓存路径的更多相关文章

  1. Gradle修改缓存路径 和 Gradle修改Maven仓库地址

    Gradle修改缓存路径 修改gradle启动脚本进入gradle安装的bin目录,使用文本编辑器打开gradle.bat文件,在如图的位置添加以下语句 set GRADLE_OPTS="- ...

  2. 【修改缓存路径】修改Gradle缓存路径的几种方式

    起因 Android Studio的gradle在缓存处理上有时候会莫名其妙的出问题,必要时需要手动删除缓存,然后重新编译.有时也有出于其他考虑指定gradle缓存路径. 方法1:修改gradle文件 ...

  3. arcgis server缓存路径修改

    由于空间不够用,需要更换瓦片的输出路径,具体的修改方法如下: 1.打开ArcCatalog,打开GIS服务器,找到已经添加的gis服务器,一般都是机器名,如下所示,右键我的gis服务器(admin-t ...

  4. redis修改持久化路径、日志路径、清缓存

    redis修改持久化路径和日志路径 vim redis.conf logfile /data/redis_cache/logs/redis.log #日志路径 dir /data/redis_cach ...

  5. FireFox 书签 缓存 路径设置

    English ver down https://www.mozilla.org/en-US/firefox/new/ add ons https://addons.mozilla.org/en-US ...

  6. Xcode插件路径、缓存路径、图片压缩工具路径、代码片段路径、symbolicatecrash路径

    Xcode插件路径 ~/Library/Application\ Support/Developer/Shared/Xcode/Plug-ins   Xcode缓存路径 ~/Library/Devel ...

  7. YourSQLDba 配置——修改备份路径

    公司一直使用YourSQLDba做本地备份,磁带机将本地备份文件上带做异地容灾备份.近期整理.验证备份时发现本地备份目录命名五花八门 其中有历史原因,也有无规划化的缘故,看着这些五花八门的目录,越看越 ...

  8. 3.SpringMVC修改配置文件路径和给界面传递数据

    1.修改配置文件路径  达到  配置多文件的目的 web.xml文件中基础配置有springMVC配置的servlet路径 <servlet-name>SpringMVC</serv ...

  9. ArcGIS Server 增加缓存路径

    Server缓存服务,由于缓存文件经常比较大,默认放在C盘下容易导致磁盘空间不够,因此Server提供了增加缓存路径的方法来解决该问题. 增加的路径有两种,一种是Server所在服务器增加一个和原缓存 ...

随机推荐

  1. PageRank在Hadoop和spark下的实现以及对比

    关于PageRank的地位,不必多说. 主要思想:对于每个网页,用户都有可能点击网页上的某个链接,例如 A:B,C,D B:A,D C:AD:B,C 由这个我们可以得到网页的转移矩阵      A   ...

  2. php学习记录

    放了寒假.期末考试折腾了一个月都不会写代码了. 一放寒假就找了套PHP培训的课程 在这做些笔记,系统的学习一下php 2017.1.14 介绍集成环境---wamp Apache服务器根目录 / -- ...

  3. spring 5种通知

    方法实现接口 package com.cn.spring.aop.impl; //加减乘除的接口类 public interface ArithmeticCalculator { int add(in ...

  4. Android小功能之垂直滚动条

    <?xml version="1.0" encoding="utf-8"?> <ScrollView xmlns:android=" ...

  5. JS脚本语言(全称java script:网页里使用的脚本语言:非常强大的语言):基础语法

    一.注释语法 1.单行注释// 2.多行注释/**/ 二.语法输出 1.alert(信息):弹出信息 2.confirm(信息):弹出一个和用户交互的对话框 3.prompt(信息):弹出一个可以让用 ...

  6. radioButton添加试题选项webview(二)

    由于项目里radioGroup里,4个选项里加载的是webview,而不是radiobutton本身自己可设置的text类型,并且每个webview都需要和radiobutton对齐,所以这个布局有点 ...

  7. linux下启动tomcat----Cannot find ./catalina.sh

    参考:http://dearseven.blog.163.com/blog/static/1005379222013764440253/ linux 下启动tomcat [root@test233 b ...

  8. JQuery flot API文档 中文版

    调用plot函数的方法如下: var plot = $.plot(placeholder, data, options) 其 中placeholder可以是JQuery的对象,DOM元素或者JQuer ...

  9. http的Max-Forwards头的作用(转)

    请求头的Max-Forwards用来请求特定代理.当代理收到一个允许URI转发的OPTIONS请求,则检查Max-Forwards.如果Max-Forwards值为0,则不能转发该消息:相反,代理会将 ...

  10. [ Android 五种数据存储方式之一 ] —— SharedPreferences存储数据

    SharedPreferences类,它是一个轻量级的存储类,特别适合用于保存软件配置参数. 主要是保存一些常用的配置比如窗口状态,一般在Activity中 重载窗口状态onSaveInstanceS ...