【问题标题】:What is the best practice to cache images on Android?在 Android 上缓存图像的最佳做法是什么?
【发布时间】:2011-03-01 07:13:53
【问题描述】:

在我的应用程序中,我使用 SoftReference 来缓存图像,它可以在活动的 Internet 连接下正常工作。现在我需要缓存图片,这样我就可以在离线模式下使用它了。

实现它的最佳方式是什么? 使用带有 SoftReference 和数据库的复杂解决方案?或者也许是 SoftReference 和本地存储(SD 卡)?

非常感谢您的建议。谢谢。

【问题讨论】:

    标签: android database image caching


    【解决方案1】:

    内存和磁盘中的二级缓存。查看 github 上的 https://github.com/mttkay/droid-fu 项目。它包含一个以这种方式工作的 ImageCache。

    【讨论】:

    • 我尝试了 WebImageView(来自 droid-fu)库,但无法正常工作,图像未加载。我已经创建了从 DroidFuApplication 扩展的应用程序并将其配置为清单,即使我已经从 BetterDefaultActivity 扩展了主要活动。但我仍然只看到加载动画。你有工作的例子吗?我的主要活动的 onCreate() 代码如下: WebImageView img = (WebImageView) findViewById(R.id.webimage); img.setImageUrl("static.technorati.com/09/12/13/2291/android.jpg"); img.loadImage(); 有什么问题?
    • 应该可以。 logcat中是否有任何异常?你的应用有 INTERNET 权限吗?
    • 是的,internetn 权限在这里,我还添加了写入本地存储的权限。
    • 在日志中我看到以下内容: 06-09 22:58:30.594: WARN/LocaleService(22485): onCreate 06-09 22:58:30.684: WARN/LocaleService(22485): onStart 06- 09 22:58:30.964:WARN/ImageLoader(22447):static.technorati.com/09/12/13/2291/android.jpg 下载失败(尝试 1) 06-09 22:58:33.794:WARN/ImageLoader(22447):static.technorati.com/09/12/13/2291/android.jpg 下载失败(尝试 2) 06-09 22:58:36.704: WARN/ImageLoader(22447): static.technorati.com/09/12/13/2291/android.jpg 下载失败(尝试 3)
    • 为什么下载失败?请问你有工作的例子吗?
    【解决方案2】:

    迟到的答案,但我希望它仍然有意义。 ImageDownloader 是这项工作的最佳选择。我还在以下位置发现了类的细微变化:

    http://theandroidcoder.com/utilities/android-image-download-and-caching/

    两者的主要区别在于ImageDownloader使用Android缓存系统,而修改后的使用内部和外部存储作为缓存,将缓存的图像无限期保留或直到用户手动删除。作者还提到了 Android 2.1 的兼容性。

    问候,EZFrag

    【讨论】:

      猜你喜欢
      • 2011-01-16
      • 1970-01-01
      • 2012-03-27
      • 1970-01-01
      • 2014-06-19
      • 2010-10-05
      • 1970-01-01
      • 2013-02-04
      • 2019-02-13
      相关资源
      最近更新 更多