从 google firebase 存储本地缓存图像

2024-04-05

我正在寻找一种方法,从 google firebase 平台上的存储中缓存图像。目前,我可以下载图像并向用户显示这些图像,但即使没有互联网连接,我也无法缓存和访问该图像。数据库可以离线访问。所以我想,也应该有一种存储方式。我不想将每个图像下载到存储中,因为这样我就需要每次检查,如果图像仍然是最新的,则它可能会被更改。这里有一些我能找到的链接,但没有回答我的问题。也许有人知道一种解决方法,或者一种实现它的方法。谢谢!

下载文件:https://firebase.google.com/docs/storage/android/download-files https://firebase.google.com/docs/storage/android/download-files

缓存(离线)数据库:https://firebase.google.com/docs/database/android/offline-capability https://firebase.google.com/docs/database/android/offline-capabilities

UPDATE 1

这是我如何使用 picasso“缓存”文件,我添加了关心下载的活动:

Picasso.with(getApplicationContext())
                            .load(uri.toString())
                            .networkPolicy(NetworkPolicy.OFFLINE)
                            .into(image1);

欢迎任何帮助。谢谢!


恐怕 Firebase SDK 本身不提供图像缓存。但是有几个很棒的库可以为您做到这一点。他们下载图像,将其显示在 ImageView 中,并将其缓存在一行代码中。只需向 Firebase 请求图像下载 URL 并将其提供给图像缓存库即可。

像这样的事情,如果你选择的话Picasso http://square.github.io/picasso/作为缓存库:

storageRef.child("users/me/profile.png").getDownloadUrl().addOnSuccessListener(new OnSuccessListener<Uri>() {
    @Override
    public void onSuccess(Uri uri) {
        // Got the download URL for 'users/me/profile.png'
        // Pass it to Picasso to download, show in ImageView and caching
        Picasso.with(context).load(uri.toString()).into(imageView);
    }
}).addOnFailureListener(new OnFailureListener() {
    @Override
    public void onFailure(@NonNull Exception exception) {
        // Handle any errors
    }
});

UPD:要使用 Picasso 的磁盘缓存,您需要显式设置 OkHttpDownloader。看这里如何在 Picasso 中使用磁盘缓存? https://stackoverflow.com/questions/23978828/how-do-i-use-disk-caching-in-picasso

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

从 google firebase 存储本地缓存图像 的相关文章

  • 定期运行任务(每天一次/每周一次)

    我想定期 每周 每天一次 运行一些任务 即获取我的网站新闻页面 即使我的应用程序已关闭 是否可以 是的 您需要查看报警管理器 http developer android com reference android app AlarmMan
  • 是否可以使用最新的 APP_PLATFORM,同时仍保持向后兼容性?

    这是我的 Application mk APP ABI armeabi v7a APP PLATFORM android 16 APP OPTIM release APP STL gnustl static APP CPPFLAGS std
  • 显示警报或收到通知时的视图

    我正在关注this http tokudu com 2010 how to implement push notifications for android 显示的教程通知 on an 安卓设备 当我在设备上运行该应用程序时 状态栏上会出现
  • 使用 APDU 命令的有效 NFC 读取比特率是多少?

    我目前正在使用 Android IsoDep trancieve 函数发送和接收累计 1628 字节的数据 该函数分布在 35 个 APDU 命令 选择应用程序 身份验证 读取 中 字节计数包括返回的 MAC 校验和以及由 transcie
  • 如何使用 adb 在设备上安装现有的 Android 应用程序?

    在开发过程中 我使用类似的东西 adb s 192 168 1 77 5555 uninstall com myApp app adb s 192 168 1 77 5555 install path to android debug ap
  • SQLite (Android):使用 ORDER BY 更新查询

    Android SQLite 我想要在 myTable 中的其他行之间插入行在android中使用SQLite 为此 我尝试增加从第 3 行开始的所有行的 id 这样 我就可以在位置 3 处插入新行 myTable 的主键是列 id 表中没
  • 如何将画廊意图中的“打开”更改为“完成”?

    我使用以下意图打开画廊来选择多个图像和视频 Intent intent new Intent intent setType image video intent putExtra Intent EXTRA ALLOW MULTIPLE tr
  • Android - 当不在栏顶部时推送通知空白

    我在使用 Android 推送通知时遇到一个小问题 如果有 3 个通知 并且只有其中一个显示标题和消息 位于酒吧顶部的那个 如果有人知道可能是什么问题 请告诉我 请参阅此链接上的图像 这就是我接收通知的方式http postimg org
  • 从多个选项卡中的编辑文本字段获取文本

    我正在尝试创建一个使用选项卡作为输入表单的 Android 应用程序 基本上 我希望对其进行设置 以便用户可以在一个选项卡上输入一些信息 然后提交该信息 或者转到另一个选项卡并输入更多信息 然后从两个选项卡提交信息 我正在使用操作栏和片段来
  • AnalyticsService 未在应用程序清单中注册 - 错误

    我正在尝试使用 sdk 中提供的以下文档向 Android 应用程序实施谷歌分析服务 https developers google com analytics devguides collection android v4 https d
  • 没有调用addToBackStack,片段仍然添加到backstack,为什么?

    我正在制作我的片段更换器助手类 但我遇到了一些问题 我称之为FragmentChanger 它有一个fragmentContainer 这是一个ViewGroup 其中包含我想展示的所有片段 我已经做了我自己的replace Fragmen
  • Android 改变 ImageView / Bitmap 的颜色

    我需要找到一种方法来改变 Android 中位图的颜色 我需要在我的应用程序中平滑地替换 更改椭圆形图像的颜色 具体取决于int价值 我需要类似的东西myValue 5比改变我的图像的颜色RED and if myValue 322将颜色更
  • 从手机访问本地主机[关闭]

    这个问题不太可能对任何未来的访客有帮助 它只与一个较小的地理区域 一个特定的时间点或一个非常狭窄的情况相关 通常不适用于全世界的互联网受众 为了帮助使这个问题更广泛地适用 访问帮助中心 help reopen questions 我正在使用
  • android 中camera.setParameters 失败

    我已将相机功能包含在我的应用程序中 我还在市场上推出了该应用程序 我从一位用户那里收到一条错误消息 称他在打开相机时遇到错误 我已经在 2 1 的设备上测试了该应用程序 我从用户那里得到的错误是使用 Nexus One 它主要运行 2 2
  • ACCESS_BACKGROUND_LOCATION 不适用于低于 Q (29) 的 Android 版本

    我的应用程序面向 Android API 28 根据文档 https developer android com preview privacy location target android 10 我应该要求ACCESS BACKGROU
  • 内部存储的安全性如何?

    我需要的 对于 Android 我需要永久保存数据 但也能够编辑 并且显然是读取 它 用户不应访问此数据 它可以包含诸如高分之类的内容 用户不得对其进行编辑 我的问题 我会 并且已经 使用过Internal Storage 但我不确定它实际
  • Android:确定 2.2 及更高版本上的摄像头数量

    我的应用程序需要在 Android 2 2 及更高版本上运行 我需要一种方法来确定可用摄像机的数量 有很多帖子解决了这个问题 但我找不到一个有效的 一种解决方案是简单地检测操作系统版本 任何 2 2 版本的设备都仅限于 1 个摄像头 即使该
  • “无法实例化活动”错误

    我的一个 Android 应用程序拥有大约 100 000 个用户 每周大约 10 次 我会通过 Google 的市场工具向我报告以下异常情况 java lang RuntimeException Unable to instantiate
  • android:layout_alignParentBottom 在没有显式布局高度作为 ListView 中的行的情况下使用时会被忽略

    当我使用RelativeLayout与任一fill parent or wrap content作为高度和一个指定的元素 android layout alignParentBottom true 它被忽略并在顶部对齐 设置高度Relati
  • 通过powershell运行ADB命令

    所以我尝试通过 powershell 脚本运行一些 ADB 命令 这是我正在尝试做的一个简单示例 adb shell echo in adb shell su root echo you are now root ls cd data da

随机推荐

  • Chrome 新标签页事件

    我想在 Chrome 中创建新选项卡时触发一个事件 我以为下面的内容可以做到这一点 但似乎不行 初学者 清单 json name My First Extension version 1 0 description The first ex
  • 如何处理服务器和客户端之间的时区?

    我正在开发一个网站 我必须处理用户可能存在的不同时区 这成为一个大问题 因为该网站举办拍卖等时间敏感的活动 服务器上的所有日期 时间均采用 UTC 格式 数据库以 UTC 时间戳存储所有内容 PHP 默认时区也设置为 UTC date de
  • 选择选项中的删除线文本

    我试图删除选择选项中的文本 但由于某种原因它不起作用 Fiddler https jsfiddle net 99x50s2s 95 https jsfiddle net 99x50s2s 95 HTML
  • NSURLSessionTask 身份验证质询完成处理程序和 NSURLAuthenticationChallenge 客户端

    我正在实施一个自定义NSURLProtocol 并且内部想要使用NSURLSession与内部网络的数据任务而不是NSURLConnection 我遇到了一个有趣的问题 想知道挑战处理程序的内部实现NSURLSession NSURLSes
  • 使用 XML 差异和合并进行版本控制

    我正在寻找一个开源版本控制工具 可以比较和合并 XML 文件 我必须找到这样一个工具的困难在于 我需要正确合并比较节点而不是行的 XML 文件 任何想法 谢谢 不幸的是 对于这个问题没有一刀切的解决方案 XML 比较对于您认为不同的内容非常
  • 为什么 C# Parallel.Invoke 很慢?

    我正在这样做 private static void Main string args var dict1 new Dictionary
  • 带有每个项目的详细信息行的 Gridview

    我是 ASP NET 新手 我有一个基本的工作网格视图 列出了公司名称 参见下面的代码 我想要做的是在每个公司下提供另一个联系人子列表 在 子列表 中缩进一点 我想以某种方式循环遍历 Gridview 数据 然后运行联系人查询 将是 Sel
  • React、Webpack 应用程序中重叠 CSS

    我使用 webpack 和 Reactjs 创建了一个应用程序 到目前为止我已经创建了 2 个页面 我已经为这两个页面定义了 CSS 样式 但是 当我在加载页面 1 后加载页面 2 时 页面 1 的样式会干扰页面 2 的样式 例如 Page
  • 绘制指数或分位数色带在零附近发散的栅格

    我正在使用 R 函数levelplot 来自rasterVis包来绘制具有单个发散色带的三个栅格的堆栈 我想更改栅格颜色渐变的比例 以便地图突出较低值的差异 这可以通过颜色中断的非线性分级来完成 我正在使用来自的代码a gist https
  • Orderer有区块(账本)数据吗?

    我使用基于 Kafka 的订购服务构建了超级账本结构网络 我以为Orderer没有Block数据 但是 当我检查 Orderer 服务器中的 var hyperledger product orderer chains mychannel
  • 无法加载为扩展“[extensionHere]”注册的类型[nameHere]

    我一直在 fx3 5 上使用 WCF 学习和构建 JSONP Web 服务 你可以阅读我在以下网站进行的一些试验 NET ASMX 返回纯 JSON https stackoverflow com questions 1903022 net
  • 为什么 pygame 上两个移动物体之间的碰撞不起作用?

    我正在用 pygame 做一个蛇游戏 游戏中有两条蛇 我想检测蛇头何时与另一条蛇身体碰撞 对两者都执行此操作 以及当两个头碰撞时的特殊情况 我目前正在做蛇头和另一条蛇身体之间的碰撞 如果其中一条蛇被冻结而另一条蛇在移动 则碰撞效果很好 但如
  • 如何在代码中定义DataTemplate?

    我怎样才能创建一个DataTemplate在代码中 使用 C 然后向其中添加一个控件DataTemplate
  • 当我的项目有同名模块时,如何从标准库导入? (如何控制 Python 寻找模块的位置?)

    我的项目文件夹中有一个名为calendar 在代码的其他地方 我想使用标准库Calendar班级 但是当我尝试导入此类时 使用from calendar import Calendar 这会从我自己的模块导入 从而导致稍后出现错误 我怎样才
  • PHP IMAP 交换问题

    所以我目前正在编写的 PHP 脚本有一个小问题 首先 我假设该脚本应该连接到 IMAP 邮箱 搜索一些电子邮件并下载其附件 所有这些都已经编码并正在使用我自己的 Gmail 帐户 当我尝试连接到交换服务器时出现问题 短代码摘录 mbox i
  • “自动测试/rails [...]不[...]存在。正在中止”

    我发现自动测试已停止工作 autotest loading autotest rails Autotest style autotest rails doesn t seem to exist Aborting 根据这篇博文 http ww
  • 一次保存多个 Backbone 模型

    我有一个包含大量模型的 Backbone 集合 每当在模型上设置特定属性并保存它时 就会触发大量计算并重新渲染 UI 但是 我希望能够同时在多个模型上设置属性 并且只有在全部设置完毕后才进行保存和重新渲染 当然 我不想为一项操作发出多个 h
  • Angularjs:无法将类添加到ID

    这里有点情况 我刚刚学习 Angular 但遇到了以下问题 我有一个重复自身的列表 ng repeat 当它被渲染时 您可以单击它 然后我将一个类添加到您单击的列表项中 jQuery 风格 id addClass myClass id 存储
  • 如何在php中打印多维数组

    我有一个以下格式的数组 Array 0 gt Array product id gt 33 amount gt 1 1 gt Array product id gt 34 amount gt 3 2 gt Array product id
  • 从 google firebase 存储本地缓存图像

    我正在寻找一种方法 从 google firebase 平台上的存储中缓存图像 目前 我可以下载图像并向用户显示这些图像 但即使没有互联网连接 我也无法缓存和访问该图像 数据库可以离线访问 所以我想 也应该有一种存储方式 我不想将每个图像下