如何在本地存储图像并在android应用程序中使用?

时间:2021-03-21 11:38:15

标签: firebase-storage android-glide

我在我的应用程序中使用 Firebase Firestore 和 Firebase 存储作为在线数据库,并使用 Glide 缓存和存储图像。

目前在我的视图模型中,我正在从 firesore 检索用户列表(这是一个侦听器)并更新一个 livedata 变量。在我的片段中观察到这个实时数据变量以相应地更新我的回收视图。

在我的视图模型中,

 databaseReference.addSnapShotListener{value,error->
        if (value == null) return@addSnapshotListener
        val list = mutableListof<UserModel>()
        value.documentChanges.forEach {
            val data = it.document.toObject(UserModel::class.java)
            list.add(data)
        }
        userLiveData.value = list // updating my live data here
    }

在我的片段中,

viewModel.userLiveData.observe(viewLifeCycleOwner,{ it ->
  recycleAdaptor.submitList(it)
}
}

在我的 recycleView 适配器的 onBind 方法中,

item = data[position] // this is my userModel
Glide.with(userImageView).load(item.profilePicture).into(userImageView)

这个方法很好用,但问题是我的应用需要离线工作。在这里,firestore 帮助我缓存我的数据,但有时无法正确缓存图像。所以有时当互联网关闭时,图像无法加载。这可能是由于缓存内存问题。所以在这里我想将图像存储到本地文件夹,然后将其显示在图像中,而不是每次都从网上加载。

这样做的最佳实践是什么?或者有没有可以做到这一点的图书馆?

注意事项如下:

  1. 如果我的图像有任何变化,我的图像文件名就会改变。所以图像 url 可以用作主键

0 个答案:

没有答案