gpt4 book ai didi

android - picasso 从不缓存到模拟器上的磁盘

转载 作者:行者123 更新时间:2023-11-29 21:34:54 26 4
gpt4 key购买 nike

我正在使用 picasso 为我的应用程序加载图像。没有一个特别大,但它只是缓存到内存,所以我在图像繁重的页面上遇到内存不足错误。是否需要在 picasso 或模拟器中手动设置以启用磁盘缓存?

最佳答案

您是否为 Picasso 提供了自定义下载器?有几件事你应该确定:

  1. 您是否有权写入指定的缓存文件夹?
  2. 您的缓存大小限制是否足以容纳 Picasso 正在下载的图像?

下面是将图像写入 SD 卡缓存目录的示例实现:

// Obtain the external cache directory
File cacheDir = context.getExternalCacheDir();
if (cacheDir == null) {
// Fall back to using the internal cache directory
cacheDir = context().getCacheDir();
}
// Create a response cache using the cache directory and size restriction
HttpResponseCache responseCache = new HttpResponseCache(
cacheDir,
10 * 1024 * 1024);
// Prepare OkHttp
httpClient = new OkHttpClient();
httpClient.setResponseCache(responseCache);
// Build Picasso with this custom Downloader
new Picasso.Builder(getContext())
.downloader(new OkHttpDownloader(httpClient))
.build();

我还没有对此进行测试,但也存在服务器返回 HTTP header 指示 OkHttp 从不缓存的可能性。对于测试,我建议:

  1. 启用 Picasso 的 setDebugging(true);从磁盘重新加载图像时,您应该会看到一个黄色标记。
  2. 在测试缓存时终止你的应用程序;绿色标记表示它来自内存缓存。
  3. 从您确定服务器未发送缓存过期/无杂注 header 的静态位置下载图像。

关于android - picasso 从不缓存到模拟器上的磁盘,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18603190/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com