1

我正在开发一个应用程序,我需要在应用程序会话期间处理一些数据。应用程序被杀死或用户手动注销应用程序后,我不需要数据。

我正在使用 POJO 来保存数据。POJO 就像帐户、用户、校园等。我从 REST API 调用中以 JSON 的形式获取所有这些数据。

由于我是相当新的 Android 开发人员,因此我试图了解在这种情况下推荐哪种存储方法。(SQLite、SharedPreferences、ApplicationContext、Bundles、ArrayList、Maps 等)

性能很重要,在用户会话期间对这些数据执行搜索。

我需要经常构造 JSON 对象并回发到 API。

有任何想法吗?

4

2 回答 2

1

将数据放在应用程序上

如果你不需要持久化你的数据并且它的生命周期很短,你可能想要创建一些 Application 的子类来保存它。这是在 Android 平台中拥有一些内存中全局数据的方式 - > How-to?

将数据放在内存 SQLite 表/数据库中

或者,如果这将帮助您查询数据,您可能需要一些内存中的 SQLite 表。在 Android 中也可以使用内存表。如何?

注意事项

第一种方法可能会给你最好的表现。所有数据都在内存中,因此很容易访问。但是如果数据的结构非常复杂,查询也很复杂,你可能想使用 SQLite 让查询数据更容易数据。性能将取决于您的数据和查询的复杂程度。性能仍然会非常好,因为事情在内存中。

但是你必须小心。如果你最终使用了太多的内存,你将使你的应用程序更有可能被 Android 框架杀死。您的数据将丢失。(5MB 可能没问题,10MB 可能太多了。你必须测试看看会发生什么。)

如果内存压力很高,那么您应该卸载到磁盘。性能会更差,特别是当存储快满时。在这种情况下,访问可能会很慢。存储和检索数据的最简单方法是 SharedPreferences。您可以将 JSON 编写为 String 首选项。同样,如果数据太复杂并且像数据库一样查询它很方便,您可以使用 SQLite。

于 2012-09-18T04:43:23.153 回答
0

如果您需要随机访问和查询数据,SQLite 是一个不错的选择,但您必须自己实现 CRUD 或某种 SQL 数据绑定。

如果您需要将所有数据集中在一起,您可以将它们作为 JSON 存储在本地存储中,然后对其进行解析(我编写了小型 databindung 库使其更容易:https ://github.com/ko5tik/jsonserializer )

如果您的数据是有限数量的偏好,您可能会启用偏好存储(我还为此编写了小型库: https ://github.com/ko5tik/andject将允许您轻松地将偏好编组和汇总到对象中)

于 2012-09-18T06:19:19.383 回答