在运行时期间存储数据的最佳方式

时间:2014-06-12 13:34:12

标签: android

我目前正在为Android智能手机开发词汇训练器。 多个活动将使用数百张索引卡。每次新活动需要时,从数据库加载所有索引卡都会太昂贵。有时,活动会修改索引卡。所有其他活动也应该可以看到修改。

问题:

所有索引卡都存储在IndexCard类型的ArrayList中。我应该将它存储在从 Application 扩展的类中,还是应该将整个ArrayList传递给使用bundle的活动?

这个博客告诉我,我的第一个想法不是好习惯,http://www.developerphil.com/dont-store-data-in-the-application-object/

哪种方式更有效,什么是好的做法?

2 个答案:

答案 0 :(得分:0)

好吧,我更喜欢将它存储到您已经提到的数据库中,并在第一次启动时将其加载到包含序列化对象的Map。您还可以存储序列化对象并在数据库中保留索引。因此,您只需要加载索引并在需要时立即引用序列化对象。访问这些文件应该比读取数据库快得多。

将此存储在SingleTon对象中并不是一个好主意,因为在这种情况下GC会快速销毁它和/或应用程序。那些被称为" Soft-References"是最好的方式。如果你真的想存储大量的数据(我不喜欢),你可能想要使用vanilla-java https://code.google.com/p/vanilla-java/wiki/HugeCollections

答案 1 :(得分:0)

您是否考虑过将其存储在SharedPreferences中?我的应用程序中还有一个相当大的XML数据文件(250k)。在应用程序启动期间,我将数据文件读入自定义对象的ArrayList,序列化ArrayList,并将其作为String存储在SharedPreferences中。我使用了Gson库,它可以非常快速,轻松地存储和加载ArrayList对象作为字符串。