我想知道在我的android应用程序中创建列表的好方法。我有所有的信息在我的数据库中,并希望从它加载数据,每次我启动的应用程序,并从它的列表(id和标题)。
最好的方法是什么?
我应该创建一个PHP脚本,以包含所有列表项的JSON编码数组进行响应,还是应该创建一个XML文件,该文件在每次数据库中的数据更改时生成,并在每次启动应用程序时导入到应用程序中?还有没有别的好办法呢?
因为所有的东西都是由android中的XML文件构成的,所以感觉导入XML将是一件好事,不是吗?如何将XML文件从web服务器导入到应用程序中?
// Daniel
发布于 2011-03-01 21:31:26
在您的情况下,我会选择JSON而不是XML,所有原因都在下面的帖子中陈述:http://ajaxian.com/archives/json-vs-xml-the-debate
此外,在android中,默认情况下内置了JSON Array,因此您不必进行任何额外的代码传递。
return new JSONArray("my json string goes here...");
由于我们讨论的是移动设备,我总是会在php脚本中生成更改,而不是完全同步,因为这将比完全同步小得多。但是,如果这适用于您的应用程序,则需要为您的用户提供执行完全重新同步的选项。我将使用SQLite数据库来存储数据,并且只更新其中的更改。
为了使流更小,你可以用gzip压缩来自php的输出,因为这可以被android设备本机读取。在我的应用程序中,我在传输之前将500kb压缩到~110kb,这在性能上节省了很多。下面是如何读取流的部分示例:
InputStream in = null;
HttpURLConnection httpConn = null; // you will have to write your on code for this bit.
if (httpConn.getContentEncoding() != null)
{
String contentEncoding = httpConn.getContentEncoding().toString();
if (contentEncoding.contains("gzip"))
{
in = new GZIPInputStream(httpConn.getInputStream());
}
}
else
{
in = httpConn.getInputStream();
}
我希望这一切都有意义,这是一个漫长的一天的编程:)
Stu
发布于 2011-03-01 21:12:59
您可以使用JSON或XML。
您可以使用web服务方法,也可以在应用程序中包含您的数据库。
事实上,我经常选择为我的数据创建一个sqlite3数据库,并将其包含在assets文件夹中,该文件夹可以在启动时复制到应用程序的data文件夹中。
至于将sqlite3数据库从assets/复制到db数据目录,我发现these instructions很有帮助。
https://stackoverflow.com/questions/5160291
复制