gpt4 book ai didi

Android在哪里存储缓存数据?

转载 作者:搜寻专家 更新时间:2023-11-01 07:51:33 24 4
gpt4 key购买 nike

我的应用程序在启动时会拉取一些 json 数据,实际上,一旦数据被拉取,在用户体验期间我真的不需要再次拉取它。后端数据最多一天更新几次,所以我想我只想在应用程序启动时获取数据,然后在持续时间内使用相同的数据,并为用户提供手动刷新数据的选项。所以,我的问题是,我应该在哪里/如何存储这些数据?我已经设置了所有数据结构(类和子类)。有些类可能有 200 个左右的实例。如果我将所有内容都作为成员变量存储在我的 activity_main 类中,那么一旦其他 Activity 启动,其他 Activity 将无法使用它。将它们全部存储在数据库中可能是一种选择,但感觉有点矫枉过正。我真的不需要数据在 session 之间持续存在。有没有一种方法可以轻松地将它存储在内存中,并且仍然可以让所有 Activity 轻松访问它?

最佳答案

您应该考虑操作系统在内存不足时终止您的应用程序进程,因此将数据备份到磁盘上是一件好事。这样做,您就可以在后台从服务器刷新用户数据时显示磁盘缓存中的用户数据。

选择数据存储工具取决于您处理数据的方式。

当然,可以选择使用Realm ,但您应该考虑到它不是关系数据库这一事实。因此,如果您的业务逻辑具有包含连接和其他关系内容的复杂域模型,我会选择其他方法。它是线程安全的,也有迁移(但是,对我来说,迁移总是很痛苦,你对此无能为力)。 Realm 现在应该对 RxJava 友好(在 v0.87 中添加了支持)有一些 disadvantages (其中一部分可能已经修复),但您在使用前应该考虑一下。

至于更多的关系方法,有SQLBrite图书馆:

A lightweight wrapper around SQLiteOpenHelper which introduces reactive stream semantics to SQL operations.

它不是 ORM(但如果您愿意,可以在 SQLBrite 之上添加某种类型的 ORM:see this 了解更多信息)。事实上,这个库单独做一件事(而且做得很好)——它提供了一种机制来协调和组合表更新通知(Realm 也有这种能力),这样你就可以更新查询(以 SQL 方式)一旦数据发生变化。它尊重 RxJava!作为 SQLBrite 的替代品,您可以查看 StorIO .

还有很多不同的 ORM 解决方案,如 GreenDAO、ORMLite 等。

但我很确定,前两个库(Realm 或 SQLBrite)之一可能会对您有所帮助。因此,请分析您的应用程序和这些库,然后决定哪个更适合。

附言Great article关于 RxJava 如何帮助您轻松处理来自不同数据源(内存缓存 + 磁盘缓存 + 网络)的数据。可能会有帮助!

关于Android在哪里存储缓存数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34405057/

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