【问题标题】:Best method for handling lots of strings from an xml in an Android app?在 Android 应用程序中处理来自 xml 的大量字符串的最佳方法?
【发布时间】:2014-07-08 08:16:16
【问题描述】:

我正在开发一个显示对象列表的 Android 应用。对于显示的每个对象,我使用存储在字符串成员中的信息填充几个文本视图。

信息存储在单独的 xml 文件中,格式如下:

<?xml version="1.0" encoding="utf-8"?>
<resources xmlns:android="http://schemas.android.com/apk/res/android">
       <string-array name="Object_Name">
       <!-- Atribute 1 -->
       <item ></item>
       <!-- Atribute 2 -->
       <item ></item>
       <!-- Atribute 3 -->
       <item ></item>
       <!-- Atribute 4 -->
       <item ></item>
       <!-- Atribute 5 -->
       <item ></item>
       <!-- Atribute 6 -->
       <item ></item>
       <!-- Atribute 7 -->
       <item ></item>
       <!-- Atribute 8 -->
       <item ></item>
       <!-- Atribute 9 -->
       <item ></item>
   </string-array>

</resources>

我已经想到了两种方法来处理我的应用中的这些信息:

  1. 当应用程序启动时,我会创建一个对象列表,并为我在 xml 文件中定义的每个 &lt;/string-array&gt; 创建一个对象列表。我将来自&lt;item&gt; 的字符串存储在对象成员中。大约有 250 个这样的对象,其中一些属性包含大字符串(1000 个字符或更多)。每次需要填充文本视图时,我都会使用 getter 方法从对象中读取字符串。

  2. 当应用程序启动时,我会创建一个对象列表,并为我在 xml 文件中定义的每个 &lt;/string-array&gt; 创建一个对象列表。我存储&lt;/string-array&gt; 的资源ID,但不读取任何属性。每次需要填充文本视图时,我都会从与对象关联的 xml 中读取属性并返回字符串。

第一种方法会影响应用程序启动,因为它需要一些时间来使用数组中的信息填充对象列表,但一旦创建列表就具有速度优势。此外,所有这些字符串可能需要相当多的内存,而内存是智能手机上的宝贵资源。

第二种方法将减少应用启动并为对象列表使用更少的内存,因为只存储资源 ID。我看到的缺点是每次创建和填充文本视图时,都会从 xml 文件中读取内容。我认为从存储介质中读取会花费更长的时间,并且可能会让用户觉得应用程序迟钝。

我对这两种方法的分析是否正确?

你认为我应该使用哪种方法,为什么?

是否有一些工具可以用来测量运行时间和内存使用情况?

【问题讨论】:

  • 因为您有很多数据要显示并且您将所有数据存储在单独的 xml 文件中。这不是存储静态字符串的正确方法。您可以使用 SQLite 数据库来存储这么多数据。在使用数据库的同时,您也可以非常流畅地访问数据,并且加载所有数据所花费的时间非常少。
  • 您的意思是将数据存储到 SQLite 数据库而不是 xml 中,或者在启动时从 xml 填充数据库?在我将数据库包含到我的应用程序之前,是否有任何工具可以离线填充数据库?
  • 查看我添加的答案

标签: android xml string performance


【解决方案1】:

由于您有大量数据要显示,并且您将所有数据存储在单独的 xml 文件中。这不是存储静态字符串的正确方法。您可以使用 SQLite 数据库来存储这么多数据。在使用数据库的同时,您也可以非常流畅地访问数据,并且加载所有数据所花费的时间非常少。

为避免内存和性能问题,您需要使用数据库。

是的,您可以在设备中离线使用数据库。

查看以下链接以使用 SQLite 数据库 http://www.reigndesign.com/blog/using-your-own-sqlite-database-in-android-applications/

【讨论】:

  • 使用数据库是存储和加载大量数据的最佳选择,速度和性能最好。
  • 我会研究这个选项,谢谢你的建议
  • 我已经在数据库中准备好了表,现在我正在开发一个小型 java 程序来解析 xml 文件并创建 sql 命令来使用信息填充数据库。
  • 为什么需要解析xml数据?如果数据是静态的,那么一旦您手动将静态条目添加到数据库中。将数据插入数据库后。你可以在任何地方使用这个数据库,你不必总是解析 xml 文件。
【解决方案2】:

最好的方法 id 列表视图,因为一旦你在 xml 中保留一个列表视图,你就可以在 java 中给出 n 个值,与该列表视图相关联

【讨论】:

  • 我使用 ViewPager 来显示每个对象的片段。我无法在布局 xml 中存储那么多 ListView。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-06-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-02-06
相关资源
最近更新 更多