我正在使用Simple XML 库来处理我的 Android 应用程序中的 XML 文件。这些文件可能会变得很大——大约 1Mb,并且可以嵌套得很深,因此它们相当复杂。
当应用程序通过 Simple API 加载其中一个文件时,最多可能需要 30 秒才能完成。目前我将 FileInputStream 传递给 Simple 的 Persister 类的 [read(Class, InputStream)][2] 方法。实际上,它只是读取 XML 节点并将数据映射到我的模型对象的实例,复制内存中的 XML 树结构。
那么我的问题是如何提高 Android 的性能?我目前的想法是将文件的内容读入字节数组,然后将 ByteArrayInputStream 传递给 Persister 的 read 方法。我想处理文件的时间会更快,但我不确定节省的时间是否会被首先读取整个文件所花费的时间抵消。内存限制也可能是一个问题。
这是愚蠢的差事吗?在这种情况下,我还能做些什么来提高性能吗?如果没有,我将不得不求助于改进对用户加载文件进度的反馈。
一些警告:
1) 我无法更改我正在使用的 XML 库 - 有问题的代码是跨桌面、移动和 Web 应用程序使用的“引擎”的一部分。暂时改变它的开销太大了。
2) 数据文件是由用户创建的,因此我无法控制其中嵌套的大小/深度。