我在我的应用程序中使用 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 帮助我缓存我的数据,但有时无法正确缓存图像。所以有时当互联网关闭时,图像无法加载。这可能是由于缓存内存问题。所以在这里我想将图像存储到本地文件夹,然后将其显示在图像中,而不是每次都从网上加载。
这样做的最佳实践是什么?或者有没有可以做到这一点的图书馆?
注意事项如下: