5

我正在使用 picasso 库来加载图像。在默认的 picasso 中,它使用内部缓存来加载图像。但是根据我的应用程序配置,我必须使用外部缓存(磁盘缓存)。所以我将此代码用于磁盘上的缓存

              File httpCacheDir = new File(getApplicationContext().getExternalCacheDir(),"http");
                long httpCacheSize = 10 * 1024 * 1024; // 10 MiB
               HttpResponseCache.install(httpCacheDir, httpCacheSize);}

毕加索是灵活的。所以现在它将图像缓存在外部SD卡中..

缓存存储在 sdcard/android/data/packagename/cache/http 缓存存储在“.1”、“.0”中。格式,所以我只是打开它们并更改为“.1”到“.jpg”。它提供了我需要的确切图像。但是如何以编程方式进行?但是毕加索本身会将我的内存缓存到我的应用程序中以将图像加载到imageview中。但是我必须将它们作为图像直接保存到sdcard中/在离线模式下将位图设置为墙纸?

4

2 回答 2

5

Cache您可以在构建Picasso实例时提供自己的实现。通过这种方式,您可以提供额外的方法,您可以调用这些方法直接从内存缓存中检索位图。用于Picasso.Builder为它提供您自己的实现。当您使用时,with()您使用的是静态单例内部实例,该实例设置了大多数默认值(大多数应用程序无论如何都需要默认值。)

保留您的Cache实现参考并直接与之交互。Picasso 旨在为您处理加载/解码和缓存,但您没有理由不能围绕它进行构建。

如果您指的是磁盘缓存,那么目前没有毕加索不支持它。这是设计使然,因为磁盘层缓存是由 HTTP 层完成的,并且没有区别。

但是,您可以更改磁盘缓存的路径。如果您使用的是 OkHttpDownloader,则在构建下载器时提供不同的文件。同样,对于 UrlConnectionDownloader,您可以扩展它并覆盖该load()方法。

于 2013-08-31T20:33:53.927 回答
1

Picasso 确实处理其中的缓存和下载,您只需将其放置在类似于 Aquery 的目标图像视图中

根据The Corner Square Engineering 博客 picasso 自己处理下载缓存并将其处理程序提供给用户使用它并将图像放置在图像视图中

于 2013-08-28T11:46:45.443 回答