Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/182.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 使用XML存储数据_Android_Xml_Storing Data - Fatal编程技术网

Android 使用XML存储数据

Android 使用XML存储数据,android,xml,storing-data,Android,Xml,Storing Data,我希望使用一个XML文件来存储我的Android应用程序生成的数据。有鉴于此,我想向社区提出两个问题: 是在Android上存储数据的最佳方式,并且在数据可能每秒添加或更改一次或不到一秒的情况下效率最高 如果XML确实是#1中描述的场景的最佳选择,我该如何设置它 我将使用JSON处理XML,我将高度考虑使用谷歌。你可能想考虑直接用它自己的结构写一个数据库,并使用事务和集合。您是否有理由使用JSON/XML 1.)XML是在android上访问数据库数据的最佳方式,并且在数据可能每秒添加或更改一次

我希望使用一个XML文件来存储我的Android应用程序生成的数据。有鉴于此,我想向社区提出两个问题:

  • 是在Android上存储数据的最佳方式,并且在数据可能每秒添加或更改一次或不到一秒的情况下效率最高

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


  • 我将使用JSON处理XML,我将高度考虑使用谷歌。你可能想考虑直接用它自己的结构写一个数据库,并使用事务和集合。您是否有理由使用JSON/XML

    1.)XML是在android上访问数据库数据的最佳方式,并且在数据可能每秒添加或更改一次或不到一秒的情况下最有效

    绝对不是

    2.)如果XML确实最适合#1中描述的场景,我该如何设置它

    如果您计划只在本地存储数据,最好的方法是SQLite,它在每个设备上都作为本地数据库工作

    如果以后计划将此数据与中央数据库同步,则可以在定期运行的
    异步任务
    线程
    中异步执行此操作,但就性能而言,将每秒写入XML文件是一个坏主意

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


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

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

    最常用的是Android平台上可用的SQLite,但这完全取决于您想要使用什么数据和方式

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

    • 您没有关系数据(即设置)=>创建每个记录1条的关系表没有意义
    • 您拥有小的、动态更改的数据(如下载内容的缓存)
    • 您不需要搜索数据(使用索引等)
    可以使用哪些替代方案? 共享首选项-基本体对象的简单键/值存储 数据序列化-供您考虑-二进制(本机java)、JSON、parcelable(可与共享首选项结合使用)

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


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

    我通常使用JSON来实现我的应用程序和数据库之间的通信。为什么选择XML作为数据库???SQLite数据库是Android应用程序中的自然(可能也是最常用的)数据库。你为什么不使用SQLite?你会怎么做所有的CRUD操作?你为什么会推荐GSON而不是Jackson。OP要求性能,而GSON是迄今为止速度最慢的JSON库之一。例如,请参阅:-GSON是解析JSON的一个很好的包装器,但是它很慢……当然它“慢”,但是没有给出更多的信息。他的问题更多的是建筑性质,而不是性能。但是,我也建议他不要使用JSON,直接用事务写入DBs。事实上,如果你阅读原始问题,我会说数据最多需要每秒存储一次,如果不是更快的话。那么你应该使用真正的数据库结构并使用事务。根据您需要的“快速”,甚至考虑将信息存储在内存中并将其批量处理到数据库中。同样,这里也没有什么背景。@whizzle我想我只是指出你的推荐是基于,嗯,什么都没有;-)我想我知道你的意思,但是——说“XML是在Android中保存本地数据的最糟糕的想法之一”然后建议“共享首选项”——这实际上是一个本地XML文件……很有趣——我看不到XML序列化的任何优点。如果有人想使用某种人类可读的格式——让我们使用JSON(更快),二进制序列化可以在实现它所需的工作量最少的情况下提供更快的速度。如果你有一些“真实”的数据——让我们使用SQLite——对于我能想象的每一个场景——有一个更好的选择。请再次阅读我的评论。我远没有质疑你的主要观点。更确切地说,我被这样一个事实逗乐了,即您使用了XML,同时还赞扬了共享的首选项。它是XML文件的包装器…:-)你说得对;)正如我所写的——一切都取决于应用程序中必须保存的数据类型