我有一个活动,其中有一个带有一些图像的对话窗口。我希望在我的活动开始时将这些图像下载到缓存中,并在出现对话框窗口时从缓存中加载它们。
我的活动代码:
for(int i=0; i<avataritemlist.size();i++){
Picasso.with(activity_context)
.load(item.getpath())
.noFade();
}
对话框适配器代码:
Picasso.with(mContext)
.load(item.getpath())
.noFade()
.into(holder.imageView);
我希望在我的activty中缓存图像,然后在缓存中加载对话框适配器,但在我的情况下,它会在适配器中再次下载。我想强调activity_context
和mContext
是一样的。我做错了什么?
答案 0 :(得分:0)
Picasso.with返回的默认毕加索实例使用自动memory
和disk caching
。它使用默认值初始化:
• LRU memory cache of 15% the available application RAM
• Disk cache of 2% storage space up to 50MB but no less than 5MB. (Note: this is only available on API 14+ or if you are using a standalone library that provides a disk cache on all API levels like OkHttp)
• Three download threads for disk and network access.
默认的Picasso实例如何执行LRU内存缓存是您可能无法知道的,您所知道的只是it is a memory cache which uses a least-recently used eviction policy
。
但是,您可以使用Picasso.Builder创建Picasso实例,以便更好地控制图像缓存(通过磁盘)。有关如何使用max-age和stackoverflow post设置http请求标头属性Cache-Control的详细信息,请参阅此Jake Wharton's answer
另外,您可能还想尝试Glide,其语法与毕加索非常相似