在Android应用中处理来自xml的大量字符串的最佳方法?

时间:2014-07-08 08:16:16

标签: android xml string performance

我正在开发一个显示对象列表的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文件中定义的每个</string-array>。我在对象成员中存储来自<item>的字符串。大约有250个这样的对象,其中一些属性包含大字符串(1000个字符或更多)。每次需要填充textviews时,我都会使用getter方法从对象中读取字符串。

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

  3. 第一种方法影响应用程序启动,因为使用数组中的信息填充对象列表需要一些时间,但创建列表后可以获得速度的好处。此外,所有这些字符串可能需要相当多的内存和内存,这是智能手机上的宝贵资源。

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

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

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

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

2 个答案:

答案 0 :(得分:0)

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

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

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

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

答案 1 :(得分:0)

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