我目前正在为Android智能手机开发词汇训练器。 多个活动将使用数百张索引卡。每次新活动需要时,从数据库加载所有索引卡都会太昂贵。有时,活动会修改索引卡。所有其他活动也应该可以看到修改。
问题:
所有索引卡都存储在IndexCard类型的ArrayList中。我应该将它存储在从 Application 扩展的类中,还是应该将整个ArrayList传递给使用bundle的活动?
这个博客告诉我,我的第一个想法不是好习惯,http://www.developerphil.com/dont-store-data-in-the-application-object/
哪种方式更有效,什么是好的做法?
答案 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对象作为字符串。