保存数据时可以结合使用 SharedPreferences 和 Firestore 吗?

Can I combine SharedPreferences and Firestore when saving data?

我是初学者,目前正在开发测验应用程序。 每个测验包含 50 个问题,我使用 Room 数据库存储它们。 我有硬币、星星,以及我要保存的每个测验的分数和已完成问题的数量(以及用户信息)。 而且我仍然不知道这样做的最佳方法是什么。

我正在考虑结合 SharedPreferences 和 Firestore 来保存用户的进度和信息,SharedPreferences 将它们保存在本地,而 Firestore 则当用户在另一台设备上登录时,他的所有进度和信息都将被检索(并保存)在 SharedPref 中)。

(**当用户仅使用 Google 登录时,数据将保存在 Firestore 中)

现在我的问题是: 保存数据时可以结合使用 SharedPref 和 Firestore 吗?这样做是个好主意吗? 如果不是,我应该只使用 Firestore 吗?

Firestore 具有自动将数据存储在设备缓存中的功能,因此当您的用户离线时,他们仍然可以查看上次访问的内容。由于 firebase 已经处理好您的用户何时下线,我建议只使用 firestore 路线。

您可以在此处详细了解 firestore 的离线缓存(观看视频,很棒): https://firebase.google.com/docs/firestore/manage-data/enable-offline

Can I combine SharedPref and Firestore when saving data?

是的,你可以,但我看不到任何好处。你说:

Firestore so that when the user signs in on another device.

无论用户使用什么设备,数据都可用意味着每次用户关闭应用程序时,您都应该将进度保存在 Firestore 中。所以我不明白你为什么要使用另一种数据结构。除此之外,SharedPreferences 不会随着应用程序卸载而持续存在。 SharedPreferences 数据始终被删除。

只有当您想将进度存储在 SharedPreferences 中并仅在完成时才将测验提交到 Firestore 时,这才是一个好主意。这样,您只需支付一次写入操作的费用,听起来很完美。但是,无论用户使用什么设备,此解决方案都没有提供可用进度的功能,因为它仅存储在单个设备上。