Picasso 修改缓存路径

PicassoCache:Picasso 的内存缓存。 通过这个我们可以自定义内存缓存 毕加索缓存 Picasso 的内存缓存。 我们可以通过这个自定义内存缓存。 用 // Loading pic. PicassoCache.getPicasso() .load("http://www.google.com/images/srpr/logo11w.png") .into(imageView); // Clear memory cache. PicassoCache.clearMemCache(); // shutdown Picasso. PicassoCache.shutdown(); 立即下载

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

Android Picasso 自定义图片缓存路径 Android Picasso 自定义图片缓存路径 我的博客:http://blog.youkuaiyun.com/qq_33078541/article/details/50608760 立即下载

相关推荐

delphi android发送与接收广播

在发送广播时,使用`SendBroadcast`函数,并传入广播的Action。在接收广播时,创建一个继承自`TAndroidBroadcastReceiver`的类,并在`onReceive`方法中处理接收到的广播。然后,使用`RegisterBroadcastReceiver`函数注册广播接收器,并在`UnregisterBroadcastReceiver`函数中取消注册。请注意替换示例代码中的`YOUR_ACTION`为实际的广播Action。// 处理接收到的广播。

GuoGuoABC 1210

Picasso 图片加载及缓存的使用心得

前几天学习了Picasso图片加载框架,遇到的问题及一些要点在这里就跟大家分享下: 以前网络加载图片用的是imageLoader,但代码量不小,也挺复杂的,最近就研究了下Picasso,就讲下listview中使用Picasso加载网络图片。 学习Android的同学注意了!!! 学习过程中遇到什么问题或者想获取学习资源的话,欢迎加入Android学习交流群,群号码:36

king_zxy的博客 443

【ArcGIS】ArcMap中北京1954坐标系转WGS84的实战技巧与参数选择

本文详细解析了在ArcMap中将北京1954坐标系数据转换为WGS84坐标系的完整流程与核心技巧。针对常见的坐标偏移问题,文章首先强调了数据“归位”的重要性,并提供了处理假东、假北值的具体操作步骤。随后,重点阐述了地理变换参数(如Beijing_1954_To_WGS_1984_2)的选择逻辑及其对转换精度的决定性影响,并结合案例说明了参数选择、中央经线确认及结果验证等关键环节,旨在帮助用户高效、准确地完成坐标转换。

f6g7h8i9j的博客 331

详谈Picasso图片缓存库特点及用法

摘要 Picasso是美国SQUARE移动支付公司开源的图片缓存加载库。可以实现图片下载和缓存功能,效率和性能都很不错。 Square公司官方博客:http://square.github.io/ Square公司Github地址:https://github.com/square Square公司Picasso的Wiki地址:http://square.github.io

持续学习中 1438

Jetson Nano系统重装的艺术:从格式化到烧录的深度解析

本文详细解析了Jetson Nano系统重装的完整流程,从SD卡格式化到系统镜像烧录的进阶技巧,包括硬件选择、软件准备、常见问题处理及深度学习环境配置。特别推荐使用三星EVO Plus SD卡和官方电源以确保稳定性,适合开发者快速掌握嵌入式设备系统重装的核心技术。

weixin_28273593的博客 611

[GXYCTF2019]BabyUpload1 -- .htaccess文件解析与蚁剑实战指南

本文深入解析了[GXYCTF2019]BabyUpload1文件上传漏洞的实战利用。通过绕过后缀名与内容检测,上传包含PHP代码的.jpg文件,并利用.htaccess文件强制服务器将其解析为PHP脚本。文章详细介绍了.htaccess的原理、构造方法、Content-Type绕过技巧,并演示了如何使用中国蚁剑连接Webshell获取Flag,为Web安全学习提供了完整实战指南。

weixin_29016315的博客 512

android毕加索,android毕加索清除缓存

我遇到了同样的问题,没有一个解决方案对我来说是可以接受的……所以我至少用反思做了一个解决方案。 我不使用crop,resize等等,所以我的clear函数只有在你只使用load(url)resize,裁剪,转换时才有效…但是我自定义了完整的getKey函数,所以这应该至少是一个有助于扩展清晰的function。 或者只是将getKey函数设为public并将clear(uri)函数更改为clear...

weixin_32566055的博客 266

微信自动化进阶:Python识别特定消息并自动回复(基于win32api控件操作)

本文详细介绍了如何使用Python和win32api实现微信消息的智能监控与自动回复。通过精准识别聊天记录中的特定关键词,结合多级匹配策略和性能优化技巧,构建稳定高效的自动化回复系统,适用于企业客服、个人助手等场景。

weixin_42663213的博客 442

android picasso 指定缓存目录,Picasso 设置磁盘缓存

//1. 初始化File externalFilesDir = getExternalFilesDir(Environment.DIRECTORY_NOTIFICATIONS);Picasso picasso = new Picasso.Builder(this).downloader(new OkHttp3Downloader(externalFilesDir))//设置disk缓存.defau...

weixin_33955394的博客 481

Saturn PCB Toolkit V8.02 实战:5分钟完成10A电源路径的走线与过孔通流验证

本文详细介绍了如何使用Saturn PCB Toolkit V8.02快速验证10A电源路径的走线与过孔通流能力。通过实战案例和参数配置指南,帮助工程师解决大电流PCB设计中的温升失控、过孔瓶颈等核心挑战,提升设计效率和可靠性。

weixin_34194829的博客 452

Go语言AI智能体开发实战:基于LangGraphGo构建下一代工作流引擎

在AI应用开发领域,工作流编排是构建复杂智能系统的核心技术。其核心原理是将任务执行过程建模为状态图,通过节点和边的组合定义数据流转路径,实现多步骤推理与工具调用的自动化。这种基于状态图的编程模型,为智能体提供了清晰的“思考-行动-观察”循环抽象,显著提升了复杂业务逻辑的可维护性和可观测性。从技术价值看,它解决了传统代码中状态分散、流程僵化的问题,支持条件分支、并行执行等高级模式,是实现生产级AI应用的关键基础设施。在应用场景上,该技术广泛适用于客服机器人、自动化审批、数据ETL等需要多步骤协调的领域。本文以

weixin_30457551的博客 365

picasso修改缓存路径

Picasso使用方法Picasso.with(上下文).load(图片url).placeholder(加载成功前的默认图片) .error(加载错误时的图片).into(imageview); 修改picasso图片缓存路径由于picasso是单例模式,只需在Application中onCreate方法中设置即可 /** * 设置图片缓存

SuperRMB的博客 1234

OI 生涯回忆录 《Pilgrimage》

前言 于 NOI2020 后写下本文。 本文简单提及了在写作时尚能回忆起来的,在我的 OI 生涯中对我的影响重大的人、事、比赛等。 写作本文,旨在在回忆允许的范围内,对 OI 生涯进行一定程度上的梳理,总结。 开端 入门 我最早接触计算机程序设计,是在小学。 那时候,我的数学成绩不错,就被老师推荐去学习编程。 就这样,我在局前街小学的何静老师的指导下,走上了编程的道路。 小学时的编程,与其说是 “竞赛” ,不如说是 “兴趣班” 。 当时,包括我在内,很多小孩子天性是浮躁的。支撑我对着无聊的代码学下去的,并不

cz_xuyixuan的博客 1万+

Picasso自定义缓存目录

项目做完终于有点自己的时间了,就想看点源码涨涨姿势,那就看看Picasso这个牛逼哄哄的图片加载框架吧,当然这个也是自己最喜欢的图片加载框架。 实际项目中可能有需求自己定制图片的缓存目录,那么就需要自定义下载器,如果我们使用with来构建Picasso 的实例的话,Picasso会通过Builder模式为我们初始化一个默认的下载器: public Picasso build() {...

weixin_30587927的博客 125

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

picasso-高级使用之自定义缓存位置

1.自定义缓存位置 picasso默认缓存位置为 /data/data/应用包名/cache 路径下在这里如果我们实用的是模拟器或者经过root的手机我们可以直接访问该目录接下来我们来从picasso的源码进行分析 首先我们一般调用picasso是这样的Picasso.with(getApplicationContext()) .load("http://i2.171

MarsKang的博客 1268

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

安卓框架之Picasso

安卓框架之Picasso

似霰的博客 2257

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

Picasso图片框架加载图片 使用及缓存问题

其实Android开发的知识点就那么多,面试问来问去还是那么点东西。所以面试没有其他的诀窍,只看你对这些知识点准备的充分程度。so,出去面试时先看看自己复习到了哪个阶段就好。上面分享的百度、腾讯、网易、字节跳动、阿里等公司2021年的高频面试题,博主还把这些技术点整理成了视频和PDF(实际上比预期多花了不少精力),包含知识脉络 + 诸多细节,由于篇幅有限,上面只是以图片的形式给大家展示一部分。【Android思维脑图(技能树)】知识不体系?

2301_82242499的博客 608

Picasso 设置磁盘缓存

//1. 初始化 File externalFilesDir = getExternalFilesDir(Environment.DIRECTORY_NOTIFICATIONS); Picasso picasso = new Picasso.Builder(this) .downloader(new OkHttp3Downloader(externa...

weixin_33895516的博客 634

让Picasso不缓存图片

问题描述:大多APP都有更换个人头像的功能,楼主在开发中遇到了当更换头像时,头像没有更换过来的问题,我用的是Picasso图片请求框架,而这些加载图片的框架一般都会有三级缓存策略,当我们去加载一张图片的时候就会优先查找本地有没有,当一张图片已经加载过了之后就会缓存到本地,虽然我们更换了头像,但是图片的url没有变,所以再次加载的时候还是原来本地缓存的图片,而不是新的图片,所以我们在加载图片的时候可...

得已 1199

Picasso下载图片到指定路径的实现

最近做项目,要下载图片到本地(不是指缓存),之前用过HttpURLConnection和HttpCLient,但是感觉太繁琐,而且6.0之后到Apache包也不支持了,后来我想到了Picasso的缓存,Picasso缓存图片,那肯定是下载到本地实现了,我们只要更改下本地路径,就能轻松实现了。 废话不多说,直接上代码了。 private void download() { /

xqkillua的专栏 1203

Android图片开源库Picasso讲解

Picasso解析图 目录 1. 简介 介绍:Picasso,是Android中一个图片加载开源库 主要作用:实现图片加载 Picasso不仅实现了图片异步加载的功能,还解决了Android中加载图片时需要解决的一些常见问题 接下来,我会对Picasso的每个功能点进行详细的介绍 0. 添加依赖 要使用Picasso,首先我们要添加版本依赖,去官网或者Github 看一下当前的...

qq_28514109的博客 386

picasso使用方法与原理分析(一)

前言        安卓开源的图片加载框架有很多。最初的imageloader(目前已经不再维护),目前的picasso, glide。picasso和glide在加载展示图片这个模块其实相似度蛮高,谷歌也在很多项目中使用了glide。但这并不是说glide就在任何项目都是最适合的,我们必须在理解每个框架的原理的基础上选择适合我们的框架。接下来的几篇文章会通过分析picasso与glide...

alvinhuai的专栏 5222

Picasso的详细使用

先扯下淡,还记得前年下半年的时候我开始接触并使用Glide。 使用Glide的原因很简单,网络上各种夸Glide怎么怎么好,比如加载图片省内存,比如可以加载GIF图片,谷歌推荐使用等等。可是现在我又发现一个比较怪异的现象,网上大批的人开始说picasso怎么怎么好了,比如内存也可以很小,而且包小方法数少,可以减少发生64k的问题。先说说我当时使用glide的时候发生的问题,比如缓存到本地的图片根本

qq_28152841的博客 612

picasso使用

// 举例子    Picasso.with(this)             // 设置图片的路径,可以是网络url,也可以是本地图片路径           .load(R.mipmap.ic_back)             // 设置图片采样率,一般设置为RGB565,这样会比RGB888节省一半左右的内存消耗           .config(Bitmap.Config.

点滴之路的博客 441
上一篇: RxJava2出现:Unable to create call adapter for io.reactivex.Flowable
tonycheng93
博客等级 码龄12年 2粉丝 8原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值