我正在寻找一种方法,从 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(使用前将#替换为@)