我是学习android的php / mysql开发人员。我正在创建一个Android应用程序,它从我的php应用程序接收信息,以创建不同产品的列表视图,这将打开该产品的详细信息的Web视图。
目前我的php cms web应用程序为iphone应用程序输出xml列表....(另外,单独输出html)。我完全控制了php应用程序,所以如果有更好的方法输出Android应用程序的数据,请告诉我。
我创建了从Web读取xml并创建列表视图的代码。该列表可以每天刷新,因此每次应用程序启动时都不需要从在线xml中读取数据。
所以我想存储本地检索的数据,以提高我的应用响应能力。在任何给定时间最多可存储500个产品描述,最多可存储30个不同的xml列表。我正在开发一个包含大约30种产品的xml列表。
为了获得最佳性能,我应该将产品信息存储在sqlLite数据库中,还是应该将实际的xml文件存储在缓存/数据库或其他方法(如应用程序缓存)中。
我还想创建数据即服务的更新,这是个好主意吗?
答案 0 :(得分:2)
存储数据的最有效方法是RAM。但是如果你想缓存它,那么最有效的方法就是数据库。
我建议您将数据存储在sqlite android数据库中。
您还可以考虑使用xml来实现更快的网络传输,并通过java.util.zip包类解压缩。您甚至可以考虑使用数据输出/输出流来传输数据的简单格式,比xml更简洁。 (我在我的应用程序中这样做,效果很好)
以下是有关数据输入/输出流方法的一些细节:
这种技术的优点是你可以节省带宽,因为只有数据,而且由于xml没有冗长的装饰。您应该阅读有关java规范的内容,以了解如何在数据输出流中写入double,int,字符串。但是使用两种语言很难获得正确的数据。
如果php无法以合适的方式保存格式,请使用xml,这样会简单得多。首先尝试使用普通的xml,然后尝试使用zip或tarball或xml文件。
但这一切都与网络连接时的速度增益有关。
您需要做的第二部分是将列表的每一行存储在SQL表中。然后你可以使用CursorAdapter为列表视图快速检索它(它打破了迷人的MVC模型,但它非常快!)。
答案 1 :(得分:1)
对此感到抱歉,但写作评论的时间太长了。这不是对你问题的回答,因为在我看来,Stéphane回答得非常好。确实,最好的解决方案是将数据存储在sqlite数据库中。然后,您需要创建要用作数据,数据库和应用程序之间的连接的类。我不想因为这里所说的内容而受到赞扬(我也投票了)。
我关心的是另一个建议(使用低级原始数据流进行数据操作,列表的步骤就是答案)。我强烈建议您避免创建自己的专有协议。它是这样的:
每当我需要处理未知,模糊和任意数据blob序列时,它就会让我哭泣。记住为什么我们不使用未知格式总是好的:
最后,如果目的是避免XML的典型冗长,无论出于何种原因,您都有多种选择。现在我可以想到CSV,但我不是数据存储方面的专家,所以如果你不熟悉它,我相信你可以找到很多可以随时使用API的好方法。
祝你好运!