Android Firebase缓存与实现自定义房间缓存

Android Firebase缓存与实现自定义房间缓存,android,firebase-realtime-database,android-room,Android,Firebase Realtime Database,Android Room,我们正在使用firebase实时数据库,我正在考虑在本地实现缓存以减少重复调用 所以我提出了一个算法,它涉及到房间持久性库 stream only the latest data from firebase store in room cache when requested fetch all data from room cache and return 但后来我开始考虑firebase提供的缓存,并开始意识到我可能完全可以避免使用room library stream only t

我们正在使用firebase实时数据库,我正在考虑在本地实现缓存以减少重复调用

所以我提出了一个算法,它涉及到房间持久性库

stream only the latest data from firebase
   store in room cache
when requested fetch all data from room cache and return
但后来我开始考虑firebase提供的缓存,并开始意识到我可能完全可以避免使用room library

stream only the latest data from firebase
when requested call fetch data using a singleValueListener
因为我们使用的是单值侦听器,所以只能从firebase获取缓存数据


使用第二种方法有哪些缺点?我知道firebase缓存被限制为10MB,因此这可能与云Firestore不同,云Firestore默认启用,而firebase realtime database启用,您需要使用以下代码行:

FirebaseDatabase.getInstance().setPersistenceEnabled(true);

这意味着您将在默认情况下拥有数据库的本地副本。因此,没有必要再添加一个。因此,通过这种方式,您只能获得新数据,否则您获得的所有数据都来自缓存。

这里您需要知道的一件大事是,SDK管理的缓存几乎完全不受您的控制。您可以,您可以通过尝试查找它使用的数据库文件来清除它,但否则,您无法配置它

如果你自己写代码,你就必须对它的工作方式做出每一个决定,而且要把每件事都做好,需要大量的代码