我正在开发一个 Phonegap Android 应用程序,它是某种目录和产品搜索。它与提供所有数据的服务器 Intranet 同步。
问题是应用程序都已开发,除了同步崩溃。我注意到问题在于 XML 解析。
同步是一个带有按钮的 HTML。单击按钮后,它将启动一个 JS 函数,如下所示:
$.ajax({
url : "file:///android_asset/xml/produtos.xml",
data : "{}",
async : false,
cache : false,
dataType : "xml",
}).error(function (xhr, ajaxOptions, thrownError){
alert(xhr.status);
alert(thrownError);
}).done(function(data) {
// search all data, download all files from XML URL tag (used this: https://github.com/phonegap/phonegap-plugins/tree/master/Android/Downloader), construct SQLite statements and throw it in an Array for late DB transaction
if($(data).find("produtos").length > 0 && $(data).find("produtos").eq(0).find("produto").length > 0) {
$(data).find("produtos").eq(0).find("produto").each(function() {
i++;
produtos[i] = "CONSTRUCT SQL STATEMENT WITH XML PARSED DATA LIKE $(this).find('nome').text()";
}
}
});
XML 文件非常大,大约 700kb,大约有 1800 个产品。每个产品内部有大约 10 个直接节点和大约 5 个子节点,内部有其他 10 个节点(细节、图像、相关产品等)。因此,每个产品大约有 80 个节点。我的 XML 中有 1800 * 80 = 144000 个节点。此外,每个产品都有大约 5 个 URL 节点,它们是要下载的文件(我使用的是https://github.com/phonegap/phonegap-plugins/tree/master/Android/Downloader插件)。
如果我开始与下载同步,它会因内存泄漏而停止(大约 512mb,不记得正确的消息,但我可以明天发布)。如果我在没有下载的情况下开始同步(只是 XML 解析),则大约需要 30 分钟并且什么都不做(感觉像是在处理,但什么也不做)。我不知道是否有其他选项可以同步此初始数据(其他同步是通过参数传递最后一个同步时间戳来进行的)。你们有什么问题或(可能的)解决方案吗?如果你需要更多信息,问我,我需要你的帮助。
谢谢你们!!!