正确使用位图缓存

模特男孩

关心:这里没有代码,只有文本和一些有关位图缓存的问题

我目前正在开发一个即将完成的应用程序。我唯一想做的就是缓存图像。因为此刻,当用户打开应用程序时,该应用程序会从服务器下载图像。这些图像不是静态的,这意味着它们可以每分钟/小时/天变化。我不知道它们何时更改,因为它是按Twitter分享,Facebook点赞数量收集的图像列表。这意味着,当一张图片具有100个赞和100条推文时,它位于第1个位置。但是,当另一张图片得到更多图像时,喜欢并鸣叫,它将获得1级排名,而另一个将被置于2级排名。这不完全是我的应用程序,但您可以理解它的原理。

现在,我研究了位图缓存,以便用户不必一遍又一遍地下载相同的图像。我的问题是我该怎么做?我的意思是,我了解如何缓存位图。

我看了这篇文档文章: http://developer.android.com/training/displaying-bitmaps/cache-bitmap.html

但是,问题是,如何知道位图是否已下载并已缓存或是否必须再次下载?我是否不必先下载映像以检查系统中是否已经有此特定映像?

我考虑过要获取图像的URL,然后将其转换为哈希。然后,使用哈希作为文件名将文件保存到缓存中。然后,当图像URL到达时,将检查图像是否在缓存中可用。如果是,它将被加载;否则,将被下载。那是要走的路吗?

还是我误解了位图缓存,而它本身已经做到了吗?

布迪斯

对于这些情况,我最好的建议是:不要尝试重新发明轮子。

在Android中,图像加载/缓存是一项非常复杂的任务,许多优秀的开发人员已经做到了。只需重复使用他们的工作即可。

我个人的喜好是毕加索http://square.github.io/picasso/

用它加载东西是很简单的一行代码:

Picasso.with(context).load(url).into(imgView);

就这么简单!

它同时执行RAM和磁盘缓存,处理所有线程问题,并使用出色的网络层okHttp。

编辑:

并直接访问位图,您可以:

Picasso.with(context).load(url).into(new Target() {
  void onBitmapLoaded(Bitmap bitmap, LoadedFrom from){
      // this will be called on the UI thread after load finishes 
  }

  void onBitmapFailed(Drawable errorDrawable){
  }

  void onPrepareLoad(Drawable placeHolderDrawable){
  }

});

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何正确使用com.octo.android.robospice缓存位图

来自分类Dev

android-对位图使用全局缓存

来自分类Dev

正确使用缓存清单

来自分类Dev

使用Picasso和OkHttp更新/更改缓存的位图

来自分类Dev

位图缓存如何工作?

来自分类Dev

Android图像缓存的位图

来自分类Dev

在Android中缓存位图

来自分类Dev

缓存位图Android

来自分类Dev

Android图像缓存的位图

来自分类Dev

如何正确使用自定义Views位图?

来自分类Dev

实现LruCache以缓存位图图像

来自分类Dev

如何在Android中使用Picasso库缓存下载的位图

来自分类Dev

Android Glide:如何下载和缓存位图?

来自分类Dev

Android Glide:如何下载和缓存位图?

来自分类Dev

如何在位图中缓存Surfaceview?

来自分类Dev

处理图像缓存的正确方法,例如使用MvvmCross处理毕加索

来自分类Dev

即使使用缓存也无法正确加载图像

来自分类Dev

哪些缓存使用Alfresco?如何正确清理它们?

来自分类Dev

位图图像未正确呈现

来自分类Dev

如何正确压缩此位图?

来自分类Dev

这是正确的缓存吗?

来自分类Dev

使用drawBitmap缩放位图

来自分类Dev

使用Metal绘制位图

来自分类Dev

Android位图使用优化

来自分类Dev

位图如何使用Asynctask?

来自分类Dev

Preloadjs无法正确加载图像/位图

来自分类Dev

HttpClient无法正确缓存响应

来自分类Dev

细枝缓存如何正确工作?

来自分类Dev

iOS图像无法正确缓存