gpt4 book ai didi

android - 手动设置Firebase Firestore缓存

转载 作者:行者123 更新时间:2023-12-02 13:32:47 26 4
gpt4 key购买 nike

我正在寻找解决问题的方法,我有一个聊天应用程序,它将所有用户的对应关系显示为Recyclerview的侦听器,以改善用户发送消息时的用户体验,并使用当前列表手动更新Recyclerview带有“上传指示”的新消息,然后当该消息实际上传到Firebase时,侦听器将覆盖我使用的本地列表,并将最后一条消息更新为“已上传”,问题是如果我重建 Activity ,侦听器会自动将Recyclerview的列表更新为因此,缓存的用户无法再看到他的“上传”消息,直到它到达服务器为止。
是否在考虑是否有手动方式可以将侦听器的缓存设置为本地列表,而无需等待其上载?如果不是,也许有一个我没想到过的更好的解决方案? (我与许多不同的用户进行了许多不同的聊天,因此我需要能够获取每个聊天 channel 自己的唯一列表)

uploading message only local and uncached

and uploaded message as overwritten by listener

最佳答案

有一个选项可以强制查询仅从缓存中检索数据。如果这是您需要的,则可以在DocumentReference.get(Source source)Query.get(Source source)方法的帮助下实现。

By default, get() attempts to provide up-to-date data when possible by waiting for data from the server, but it may return cached data or fail if you are offline and the server cannot be reached. This behavior can be altered via the Source parameter.



因此,您可以将其作为参数传递给 DocumentReferenceQuery源,以便我们可以强制从 server onlychache only或尝试服务器中检索数据,然后回退到缓存。

所以这样的事情就可以解决问题:
FirebaseFirestore db = FirebaseFirestore.getInstance();
DocumentReference docIdRef = db.collection("tests").document("fOpCiqmUjAzjnZimjd5c");
docIdRef.get(Source.CACHE).addOnSuccessListener(new OnSuccessListener<DocumentSnapshot>() {
@Override
public void onSuccess(DocumentSnapshot documentSnapshot) {
//Get data from the documentSnapshot object
}
});

在这种情况下,我们强制仅从缓存中检索数据。如果要强制仅从服务器检索数据,则应将其作为参数传递给 get()方法 Source.SERVER。更多信息 here

关于android - 手动设置Firebase Firestore缓存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60337051/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com