【问题标题】:Android Java recycle View scrolling: will it redownload images?Android Java回收视图滚动:它会重新下载图像吗?
【发布时间】:2021-04-29 10:04:03
【问题描述】:

我在我的回收站视图中使用毕加索。我想知道缓存:当我向下滚动时,图像会消失,当我再次向上滚动时,它们会再次显示。但它显示下载进度条,显示它需要一秒钟。

我的代码

                Picasso.get().load(profileUrl).placeholder(R.drawable.placeholder_image).fit().into(postViewHolder.profileImg);

我想避免多次下载相同的图像。还是只是缓存需要一些时间才能再次显示已经缓存的图像?

【问题讨论】:

    标签: java android caching picasso


    【解决方案1】:

    毕加索应该自动缓存图像。您可以使用 Picasso 单例实例上的 setIndicatorsEnabled 方法检查它是否被缓存。

    • 红色:通过网络下载。
    • 蓝色:图像已缓存在光盘上。
    • 绿色:图像已缓存在内存中。

    【讨论】:

    • 谢谢。但是,它总是显示红旗。即使之前加载过
    • 您能否确认以下行为: 首次运行:从 NETWORK 加载图像(红旗)- 背景并重新打开应用程序:从 MEMORY 加载图像(绿色)- 终止应用程序并重新打开:从磁盘加载图像(蓝色)
    • 您也可以调用:Log.d("Picasso Stats", Picasso.get().getSnapshot().toString()) 并将输出粘贴到此处。
    • 它在重新加载后在一些图像上显示绿点。当我杀死该应用程序时,它再次显示红色。我有与 instagram 等类似的提要,所以没关系。我只关心上下滚动时它总是显示它正在重新下载
    • StatsSnapshot{maxSize=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);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-02-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-03-04
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多