【问题标题】:Persistent/Offline Image cache in AndroidAndroid中的持久/离线图像缓存
【发布时间】:2019-03-25 00:58:08
【问题描述】:

我正在尝试找出将图像缓存到磁盘的最佳和最有效的方法,这样即使在应用程序被终止并以飞行模式重新启动后它们也会持续存在。考虑以下用例:

  1. 打开应用程序并获取所有图像并在各自的 ImageView 中显示它们
  2. 杀死应用程序
  3. 将设备置于飞行模式
  4. 再次打开应用程序。

我正在尝试将图像保存在离线缓存中,以便它们可以在上述场景中显示。

我浏览了 picasso 和 glide 的文档,但不清楚他们的磁盘缓存在这种情况下是否可以工作。

有没有办法使用毕加索或滑翔来做到这一点?我试图避免编写自定义实现来将其存储在 SQLite 等中。

【问题讨论】:

  • 相信毕加索有离线网络能力。换句话说,毕加索应该可以在在线时自动获取并保存到磁盘以供离线使用。签出:stackoverflow.com/a/29812750/394933
  • 毕加索没有提供这样的钩子。不过,您可以从服务器设置正确的缓存标头(或在 OkHttp 拦截器中重写响应)。
  • @Brian 是正确的!检查此答案以获取详细信息。 stackoverflow.com/a/34051356/3921977

标签: android caching picasso android-glide offline-caching


【解决方案1】:

默认情况下,Glide 会为您执行此操作,而无需您做任何额外的工作。您还可以自定义要存储在缓存中的请求图像的版本。

您需要考虑的一件重要事情是,您使用 Glide 从中获取图像的 URL 是否可以离线使用,否则您还需要有一些方法来缓存它们,以便您可以在离线时启动 Glide 调用.

你可以在这个项目中看到我是如何做到的:https://github.com/KhalafMH/popular-movies-android.git

要了解如何配置 Glide 缓存,请参阅:
http://bumptech.github.io/glide/doc/caching.html

【讨论】:

    猜你喜欢
    • 2020-05-23
    • 2016-10-25
    • 2018-10-25
    • 1970-01-01
    • 2018-09-29
    • 2019-02-28
    • 2021-12-26
    • 1970-01-01
    • 2016-12-16
    相关资源
    最近更新 更多