0

ある種のカタログや製品検索である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=X​​MLの144000ノード。また、各製品には、ダウンロードするファイルである約5つのURLノードがあります(私はhttps://github.com/phonegap/phonegap-plugins/tree/master/Android/Downloaderプラグインを使用しています)。

ダウンロードとの同期を開始すると、メモリリークによって停止します(約512 MB、正しいメッセージを覚えていませんが、明日投稿できます)。ダウンロードせずに同期を開始した場合(XML解析のみ)、約30分かかり、何もしません(処理しているように感じますが、何もしません)。この初期データを同期する他のオプションがあるかどうかはわかりません(他の同期は、最後の同期タイムスタンプをパラメーターで渡すことによって行われます)。あなたたちは何か問題や(おそらく)解決策を持っていますか?さらに詳しい情報が必要な場合は、私に聞いてください。これについてはあなたの助けが必要です。

皆さん、ありがとうございました!!!

4

1 に答える 1

1

xml ファイルをより消化しやすいチャンクに分割する必要があると思います。144,000 ノードは、モバイル/JS アプリには妥当ではありません :-) もちろん問題は、xml カタログの作成を管理していますか?

于 2012-05-20T17:58:35.950 に答える