我正在开发一个显示对象列表的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>
我想到了两种方法来处理我的应用程序中的信息:
当应用程序启动时,我创建了一个对象列表,以及我在xml文件中定义的每个</string-array>
。我在对象成员中存储来自<item>
的字符串。大约有250个这样的对象,其中一些属性包含大字符串(1000个字符或更多)。每次需要填充textviews时,我都会使用getter方法从对象中读取字符串。
当应用程序启动时,我创建了一个对象列表,以及我在xml文件中定义的每个</string-array>
。我存储</string-array>
的资源ID但不读取任何属性。每次需要填充textviews时,我都会从与对象关联的xml中读取属性并返回字符串。
第一种方法影响应用程序启动,因为使用数组中的信息填充对象列表需要一些时间,但创建列表后可以获得速度的好处。此外,所有这些字符串可能需要相当多的内存和内存,这是智能手机上的宝贵资源。
第二种方法将减少应用程序启动并为对象列表使用更少的内存,因为只存储资源ID。我看到的缺点是,每次创建和填充文本视图时,都会从xml文件中读取内容。我认为从存储介质中读取需要更长的时间,并且可能会使应用程序对用户感到迟钝。
我对这两种方法的分析是否正确?
您认为我应该使用哪种方法?为什么?
我是否可以使用一些工具来衡量运行时和内存使用情况?
答案 0 :(得分:0)
由于您要显示大量数据,并且您将所有数据存储在单独的xml文件中。这不是存储静态字符串的正确方法。您可以使用SQLite数据库来存储大量数据。使用数据库时,您可以非常顺利地访问数据,并且加载所有数据所需的时间非常短。
为避免内存和性能问题,您需要使用数据库。
是的,您可以在设备中脱机使用数据库。
检查以下链接以使用SQLite数据库 http://www.reigndesign.com/blog/using-your-own-sqlite-database-in-android-applications/
答案 1 :(得分:0)
最好的方法id列表视图,因为一旦你在xml中保留一个列表视图,你可以在java中给出n个与该列表视图相关联的值