使用数据库在运动模拟Android应用程序中保存玩家/团队数据

时间:2017-02-12 19:25:35

标签: java android database sqlite android-sqlite

我试图围绕在我正在为Android工作的体育模拟游戏中实施数据库的最有效方式。

目前在应用程序中,用户可以选择一个团队进行指导,通过他们的日程安排,更改他们的阵容,并查找他们的球员'随着赛季的进行,统计数据。还没有保存功能,所以我认为保存所有玩家统计数据,团队名单等都可以用数据库来实现。

现在,当用户选择一个团队时,我有一个联盟对象,可以生成所有团队对象,而这些团队对象又拥有玩家对象。我试图用数据库包围我在应用程序中更改的所有内容。我想当我创建联盟时,我会对数据库(团队,玩家等)进行大量写作,然后当用户退出并再次启动应用程序时,我必须阅读所有数据并重新创建所有联盟,球队和球员对象?这听起来像是正确的方式吗?我觉得我喜欢漫无边际,但是我没有多少经验可以使用像这样的极其面向对象的应用程序的数据库。

1 个答案:

答案 0 :(得分:1)

除非您列出世界各地所有体育赛事的所有球队,否则我认为sqlite适合您的情况。

它易于使用,可调试,并允许您使用SQLite间谍,SQLite数据库浏览器等工具准备/ 编辑数据库。每个工具都有其优缺点/缺失功能,但您可以找到很棒的东西来设计,然后为您的起始数据库准备SQLiteDatabase

如果您已经编写了对象,那么可以将它们分离,使用DTO方法来保持团队/名单/等,或选择直接制作他们“可持久”在你已经拥有的类中编写适当的方法(即refresh(),delete()等),SQLiteQueryBuilder在那里非常有用。

作为“纯拇指”的数量级,在平均大小(5-10k行)表上的一些(3-4)String列的UPDATE执行需要毫秒(比如说5-30ms) )。对于读取,基于索引的SELECT *几乎立即返回SQLiteCursor对象(<5毫秒),因此即使在活动的onCreate()方法内也可以完成纯DML命令。对于您提到的“长时间操作”,AsynchTask以及正确的对话消息可以使等待更少,并及时通知用户。

某些限制可能来自严重的并发数据库访问或后来的DDL更改(即,您无法添加FK,您必须删除并重新创建表)但现代设备上的性能非常好且数据库文件是便携式的

最后,documentation很好,很多例子可用