我正在设计一个应用程序,它涉及解析大型XML并保持整个应用程序中的序列化数据可访问。我打算有一个数据对象来保存数据,每个组件(尽管不是每个组件都可以)访问数据。如何在整个应用程序中保持数据持久性
我希望这些数据是非持久性的,从而应用程序解析XML并将数据保存在内存中。注意这个数据会很大(XML文件大于2MB)。另外,我希望数据在用户切换到另一个应用程序时在那里。
我已经调查可能的解决方案,如:
- 静态对象
- 单身
- 推广应用
- 使用服务
- 使用SQLite数据库(我不想要做到这一点)
我不想ge t对Singletons与扩展Application的无尽争论等,但我也想做单元测试,我听说Singletons和静态对象很难测试。
任何人都可以对此有所了解吗?什么是最优雅的方式来做到这一点?
编辑:数据应该持久还是不?将其持久化意味着理论上可以是XML的一个解析,将其串行化,将数据存储在数据库中,并可以使用对象从组件访问数据。听上去怎么样?
编辑2:我认为在整个应用程序中保持数据可访问性的方式是使用将存储数据的SQLite数据库。
使用XML文件,我将解析数据并在首次启动时使用创建的SQLiteOpenHelper子类将其放入数据库中。当需要数据时,我将使用读访问使用子类对数据库进行查询。每个组件(Activity/Service/etc)都有它自己的SQLiteOpenHelper实例来查询数据库并因此可以访问数据。这听起来怎么样?
对于相对较小的原始数据,我会考虑SharedPreferences。 – 2012-08-13 08:42:04
这可以适用于小数据,但处理的数据很大 – 2012-08-13 09:08:16