何时在Android上使用本地存储,建议使用哪一个?

时间:2012-09-18 04:35:49

标签: android json sqlite storage pojo

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

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

由于我是一个相当新的Android开发,我试图了解在这种情况下建议使用哪种存储方法。 (SQLite,SharedPreferences,ApplicationContext,Bundles,ArrayList,Maps等)

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

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

有什么想法吗?

2 个答案:

答案 0 :(得分:1)

将数据放在应用

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

将数据放入内存SQLite表/数据库

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

注意事项

第一种方法可以为您提供最佳性能。所有数据都在内存中,因此很容易访问。但是,如果数据结构非常复杂且查询很复杂,您可能希望使用SQLite来查询数据更简单的数据。性能取决于您的数据和查询的复杂程度。性能仍然很好,因为事情都在记忆中。

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

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

答案 1 :(得分:0)

如果您需要随机访问和查询数据,SQLite是不错的选择,但您会有

。自己实现CRUD或某种SQL数据库。

如果您需要将所有数据整合在一起,可以将它们作为JSON存储在本地存储上,然后解析它(我写了一个小数据库,使其更容易:https://github.com/ko5tik/jsonserializer

如果您的数据是有限数量的偏好,您可以优先选择存储 (我还为此写了一个小型图书馆:https://github.com/ko5tik/andject将允许你轻松地将你的偏好编辑成对象)