Picasso 修改缓存路径
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 修改缓存路径的更多相关文章
- Gradle修改缓存路径 和 Gradle修改Maven仓库地址
Gradle修改缓存路径 修改gradle启动脚本进入gradle安装的bin目录,使用文本编辑器打开gradle.bat文件,在如图的位置添加以下语句 set GRADLE_OPTS="- ...
- 【修改缓存路径】修改Gradle缓存路径的几种方式
起因 Android Studio的gradle在缓存处理上有时候会莫名其妙的出问题,必要时需要手动删除缓存,然后重新编译.有时也有出于其他考虑指定gradle缓存路径. 方法1:修改gradle文件 ...
- arcgis server缓存路径修改
由于空间不够用,需要更换瓦片的输出路径,具体的修改方法如下: 1.打开ArcCatalog,打开GIS服务器,找到已经添加的gis服务器,一般都是机器名,如下所示,右键我的gis服务器(admin-t ...
- redis修改持久化路径、日志路径、清缓存
redis修改持久化路径和日志路径 vim redis.conf logfile /data/redis_cache/logs/redis.log #日志路径 dir /data/redis_cach ...
- FireFox 书签 缓存 路径设置
English ver down https://www.mozilla.org/en-US/firefox/new/ add ons https://addons.mozilla.org/en-US ...
- Xcode插件路径、缓存路径、图片压缩工具路径、代码片段路径、symbolicatecrash路径
Xcode插件路径 ~/Library/Application\ Support/Developer/Shared/Xcode/Plug-ins Xcode缓存路径 ~/Library/Devel ...
- YourSQLDba 配置——修改备份路径
公司一直使用YourSQLDba做本地备份,磁带机将本地备份文件上带做异地容灾备份.近期整理.验证备份时发现本地备份目录命名五花八门 其中有历史原因,也有无规划化的缘故,看着这些五花八门的目录,越看越 ...
- 3.SpringMVC修改配置文件路径和给界面传递数据
1.修改配置文件路径 达到 配置多文件的目的 web.xml文件中基础配置有springMVC配置的servlet路径 <servlet-name>SpringMVC</serv ...
- ArcGIS Server 增加缓存路径
Server缓存服务,由于缓存文件经常比较大,默认放在C盘下容易导致磁盘空间不够,因此Server提供了增加缓存路径的方法来解决该问题. 增加的路径有两种,一种是Server所在服务器增加一个和原缓存 ...
随机推荐
- phpcms v9 后台首页 去掉团队信息等版权
phpcms\languages\zh-cn\admin.lang.php $LANG['main_product_team'] = 'PHPCMS开发团队'; phpcms\modules\admi ...
- MAP--复杂map结构的构造
我的关键结构比如 struct{ int a; int b; int c; }s: 因为这三个数据是基本信息,可以唯一区别一个设备.拿这样一个数据结构作为索引就能找到每个设备. ...
- 二、HDFS学习
Hadoop Distributed File System 简称HDFS 一.HDFS设计目标 1.支持海量的数据,硬件错误是常态,因此需要 ,就是备份 2.一次写多次读 ...
- 一、什么是hadoop?
一.什么是hadoop 1. 背景 Hadoop为分布式文件系统和计算的基础框架系统,其中包含hadoop程序,hdfs系统等. 2. 名词解释 1.Hadoop, Apache开源的分布式框架. ...
- CSS学习中的瓶颈期深入分析
虽已数年,但未就学习专门写过文章,这回破处了.苍蝇不叮没有缝隙的鸡蛋,领导不做没有跟拍的表演,同样,想到写CSS学习的文章也是有原因的(虽然我的不少行为没有原因). 情景再现(尊重隐私,下面故事中人名 ...
- oracle 11g odbc连接串及配置
首先先安装HA-Instant Client-v11.2.0.3.0-x86.rar 下载地址: ftp://hhdown:2-2@58.23.131.52/download/HA-Instant%2 ...
- STM32驱动DHT11温湿度传感器
DHT11 是一款湿温度一体化的数字传感器.该传感器包括一个电阻式测湿元件和一个 NTC 测温元件,并与一个高性能 8 位单片机相连接.通过单片机等微处理器简单的电路连接就能够 实时的采集本地湿度和温 ...
- leetcode--010 Linked List Cycle II
aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAApAAAACICAIAAADfzUzYAAANeklEQVR4nO3dQa7bthbG8W4mK/A+so
- Elasticsearch基础教程
Reference: http://blog.csdn.net/cnweike/article/details/33736429 基础概念 Elasticsearch有几个核心概念.从一开始理解这些概 ...
- 用编程的方式定义UI界面
package com.example.administrator.test_hello_world; import android.app.Activity; import android.os.B ...