使用XML来存储数据

时间:2014-02-25 17:41:22

标签: android xml storing-data

我希望使用XML文件来存储我的Android应用生成的数据。考虑到这一点,我对社区有两个问题:

  1. XML是在Android上存储数据的最佳方式,在每秒或少于一秒钟添加或更改数据的情况下效率最高。

  2. 如果XML确实是#1中描述的方案的最佳选择,我该如何设置?

3 个答案:

答案 0 :(得分:7)

  

1。)XML是在android上数据库数据的最佳方式,在数据可能每秒或少于一秒钟添加或更改的情况下效率最高。

绝对不是。

  

2.。)如果XML确实是#1中描述的场景的最佳选择,我该如何设置它?

如果您打算在本地存储数据,最好的方法是在每台设备上作为本地数据库运行的SQLite。

如果您以后计划将此数据与中央数据库同步,则可以在AsyncTaskThread内异步执行此操作,这将定期运行,但将每一秒写入XML文件是表现不好的坏主意。

在每次插入/修改/删除操作中同步远程数据库可能也是一个坏主意,就好像你有许多用户可以折叠远程数据库一样。

我认为最好的方法是(如前所述)拥有一个本地数据库,您可以在其中存储该数据,并在需要时在远程端实现Web服务,并使用它定期同步两个数据库。

答案 1 :(得分:0)

我会使用JSON而不是XML,我会高度考虑使用Google的GSON。您可能想要考虑使用自己的结构直接写入数据库并使用事务和集合。你有理由想要通过JSON / XML吗?

答案 2 :(得分:0)

XML是将本地数据保存在Android中最糟糕的想法之一。

最常用的是Android平台上提供的SQLite,但这完全取决于您使用的数据和方式。

在许多移动应用程序中,出于以下原因之一,您不需要关系数据库:

  • 您没有关系数据(即设置)=>没有必要制作每个有1条记录的关系表
  • 您拥有小型且动态更改的数据(如下载内容的缓存)
  • 您不需要搜索数据(使用索引等)

可以使用哪些替代品? 共享首选项 - 原始对象的简单键/值存储 数据序列化 - 供您考虑 - 二进制(本机java),JSON,parcelable(可与共享首选项结合使用)

对于我的大多数应用程序,我目前正在使用二进制序列化来“本地存储”。   - 它足够快(通常比启动本地SQLite引擎快得多)   - 实现起来非常简单快捷,尤其是当您将其用于解析为POJO对象的json / xml下载数据时。您需要做的只是将“extends serializable”放入并使用几行代码来序列化/反序列化整个结构   - 您可以使用这些相同的类来保持本地数据和与后端的通信

当然 - 这一切都取决于具体情况 - 如果你想保留一些传感器的本地数据记录,或者允许其他应用程序使用这些数据,必须快速过滤1k +记录,或者你真的想写几百个代码行SQLite将是您的最佳选择。但大多数移动应用程序没有明确的理由使用关系(并信任我 - 不完美的)引擎。