【问题标题】:How to search XML file for specific elements without loading all elements?如何在不加载所有元素的情况下搜索特定元素的 XML 文件?
【发布时间】:2018-10-07 20:45:01
【问题描述】:

我想从 appfilter.xml 加载与已安装图标包之一相关的可绘制名称,因为您知道此类文件可能包含 1000 个元素(有时超过 8000 个)。

我在网上找到了这段代码,它可以完成这项工作,但它将所有元素加载到数组中,为了更好的内存管理和避免内存流失,我只想在这个文件中搜索我需要的元素(可能是几个 100s) 并将它们添加到我的数组中。

那么我怎么能做到这一点呢?你有什么建议

代码:

https://github.com/michelelacorte/FlickLauncher/blob/master/src/com/android/launcher3/util/IconPackManager.java

【问题讨论】:

    标签: android xml-parsing


    【解决方案1】:

    获取他们的代码。创建一个包含所有您想要的名称的 HashSet。在他们将其添加到数组的部分中,添加一个检查以查看该名称是否包含在您的集合中。如果是,请添加它。如果没有,请跳过。这是一个非常简单的改动。

    【讨论】:

    • 谢谢 Gabe,假设我有一个 100 个应用程序,你说的是,当我遍历 8000 个元素时,我会根据我的 HashSet(大约有 100 个应用程序)检查每个元素,是这个内存和 CPU 友好的进程?
    • 另外一件事,如果安装了一个新应用程序,我是否会经历循环遍历 8000 个元素直到找到所需元素的相同过程?我在 CPU 友好进程和 RAM 友好进程之间左右为难。知道在一般使用中不会每分钟安装新应用程序。
    • 它是一个 CPU 友好的进程。 HashSet 是 O(1) 的插入和搜索。记忆——差不多。虽然该集合存在,但它会占用一些内存(散列集不是内存效率最高的结构),但它可以在您完成后被清除,并且只有几百个条目。而且它比加载所有内容更友好。
    • 再次感谢您的帮助和向我保证,非常感谢。
    猜你喜欢
    • 1970-01-01
    • 2018-06-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多