Android Java回收视图滚动:它会重新下载图像吗?
Posted
技术标签:
【中文标题】Android Java回收视图滚动:它会重新下载图像吗?【英文标题】:Android Java recycle View scrolling: will it redownload images? 【发布时间】:2021-04-29 10:04:03 【问题描述】:我在我的回收站视图中使用毕加索。我想知道缓存:当我向下滚动时,图像会消失,当我再次向上滚动时,它们会再次显示。但它显示下载进度条,显示它需要一秒钟。
我的代码
Picasso.get().load(profileUrl).placeholder(R.drawable.placeholder_image).fit().into(postViewHolder.profileImg);
我想避免多次下载相同的图像。还是只是缓存需要一些时间才能再次显示已经缓存的图像?
【问题讨论】:
【参考方案1】:毕加索应该自动缓存图像。您可以使用 Picasso 单例实例上的 setIndicatorsEnabled
方法检查它是否被缓存。
【讨论】:
谢谢。但是,它总是显示红旗。即使之前加载过 您能否确认以下行为: 首次运行:从 NETWORK 加载图像(红旗)- 背景并重新打开应用程序:从 MEMORY 加载图像(绿色)- 终止应用程序并重新打开:从磁盘加载图像(蓝色) 您也可以调用:Log.d("Picasso Stats", Picasso.get().getSnapshot().toString())
并将输出粘贴到此处。
它在重新加载后在一些图像上显示绿点。当我杀死该应用程序时,它再次显示红色。我有与 instagram 等类似的提要,所以没关系。我只关心上下滚动时它总是显示它正在重新下载
StatsSnapshotmaxSize=76695844, size=0, cacheHits=0, cacheMisses=0, downloadCount=0, totalDownloadSize=0, averageDownloadSize=0, totalOriginalBitmapSize=0, totalTransformedBitmapSize=0, averageOriginalBitmapSize=0, averageTransformedBitmapSize=0,originalBitmapCount=0,transformedBitmapCount=0,timeStamp=1611590206678【参考方案2】:
毕加索默认缓存图片。如果您不想使用此代码进行缓存
Picasso.with(context).load(uri).networkPolicy(NetworkPolicy.NO_CACHE).memoryPolicy(MemoryPlicy.NO_CACHE).placeholder(R.drawable.placeholder).into(imageView);
【讨论】:
以上是关于Android Java回收视图滚动:它会重新下载图像吗?的主要内容,如果未能解决你的问题,请参考以下文章
如何使用android中的回收器视图将事件放在日历中[重复]