ある種のカタログや製品検索であるPhonegapAndroidアプリを開発しています。すべてのデータを提供するサーバーイントラネットと同期しています。
問題は、クラッシュしている同期を除いて、アプリがすべて開発されていることです。問題は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個の直接ノードがあり、内部に他の10個のノード(詳細、画像、関連製品など)を持つ約5個の子があります。したがって、各製品には約80のノードがあります。1800 * 80=XMLの144000ノード。また、各製品には、ダウンロードするファイルである約5つのURLノードがあります(私はhttps://github.com/phonegap/phonegap-plugins/tree/master/Android/Downloaderプラグインを使用しています)。
ダウンロードとの同期を開始すると、メモリリークによって停止します(約512 MB、正しいメッセージを覚えていませんが、明日投稿できます)。ダウンロードせずに同期を開始した場合(XML解析のみ)、約30分かかり、何もしません(処理しているように感じますが、何もしません)。この初期データを同期する他のオプションがあるかどうかはわかりません(他の同期は、最後の同期タイムスタンプをパラメーターで渡すことによって行われます)。あなたたちは何か問題や(おそらく)解決策を持っていますか?さらに詳しい情報が必要な場合は、私に聞いてください。これについてはあなたの助けが必要です。
皆さん、ありがとうございました!!!