2011-09-21 69 views
6

第一次发布和第一次在Android上工作,所以容易,如果我打破任何规则:)为Android应用本地或在线存储大量数据?

无论如何,我刚刚开始制作一个Android应用程序,我试图创建一个简单的琐事游戏。我打算提出许多问题(希望大约有5000多个问题)。没有数据操作,直接读取问题并将其呈现给用户。我现在面临着如何存储问题的困境。

我有两个选择:

1)捆绑与应用程序的问题:可能存储在SQLite的信息。最初,为了演示目的,我将问题放在一个XML文件中,但我很快意识到一旦问题开始堆积如何,效率将会很低。首先,我担心如果打开如此庞大的XML文件会占用Android的内存。其次,如果它包含5000多个问题,我担心应用程序有多大。关于XML vs SQLite的专业人士,我在read here。在那个例子中,用户有70,000个条目,所以我的5000个问题就足够了?

OR

2)主机服务器上的问题:我相信上面为应用就需要用的问题了大量被捆绑并且不需要担心开题和汇编问题的逻辑。它只会打到一个PHP页面,根据发送的参数,PHP页面将以XML格式返回问题。缺点是用户需要在线(以检索问题)才能玩游戏,我的服务器需要全天候运行。

有没有人遇到过这样的设计问题:如何以及在哪里存储海量数据的Android应用程序?

谢谢,任何帮助将不胜感激!

+4

我认为也应该提到相反的一面:不要违反任何规则(特别是在你的第一个问题上)。 +1表示清晰,写得很好并且格式化的问题,显示研究工作和想法。欢迎来到StackOverflow。 :) – 2011-09-21 02:59:59

回答

7

从营销的角度来看,我认为正确的做法是#1。只要查看顶级应用程序列表,它就会充满离线工作的应用程序。我不知道为什么大多数人在谈论市场营销应用程序时都没有提及这一重要标准......特别是在很多人没有数据计划的Android中。此外,琐事应用程序听起来像某人可能会在列车上下班时使用,而不是Facebook Chat等他们在线时使用的东西。

从技术角度来看,存储5000多个问题真的不会占用大量空间。有这个名为“MyFitnessPal”的应用程序。它可以在SQlite数据库中存储超过30,000种食物,并提供营养信息。所以不要高估它需要多少空间。

与#2一起工作的好处是,如果问题或答案经常变化,您可能需要采用这种方法。

+0

是的,这正是我想到的 - 关于用户无法在线玩游戏。 所以我用一千个问题来检查XML的大小,你是对的,它非常小。我实际上正在考虑抛弃整个数据库方法,因为Android似乎在打开XML文件(至少有一千个条目)方面做得很好,并且在没有抱怨的情况下解析这些信息 - 这是我之前害怕的。 – RaKku

2

我认为最好的选择是将问题存储在SQLite中。这样用户就可以访问您的游戏,即使它们处于脱机状态,这也是Hisoka提到的重要事情之一。所以我认为你应该尝试使用SQLite.