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:回收站视图没有滚动到最后一个位置

添加新列表时,回收站视图开始自动滚动

如何使用android中的回收器视图将事件放在日历中[重复]

使用Android ViewPager2在回收器视图中滚动到底部时自动更改选项卡项

在 Android 回收站视图中重新排序项目后,位置未更新

Android从地图片段底部拖动回收器视图