2

私は現在、大学の食堂のメニュー プランを表示するアプリを作成しています。プラットフォームに依存しないようにするために、Phonegap を使用します。XML 解析は JQuery を使用して行われ、レイアウトは JQuery Mobile で生成されます。

メニューの XML ファイルの解析には、motorola defy で約 1 ~ 2 秒かかります。たとえば、ラジオ ボタンをクリックして場所を別のカフェテリアに変更すると、GUI はこの秒間フリーズします。私は JavaScript でワーカー スレッドの概念を見つけ、XML データの解析をワーカー スレッドに委任することにしました。残念ながら、JQuery が Worker Threads 内で機能しないことを確認する必要がありました :-( その後、プラグイン JQuery.hive を見つけました。これで問題が解決したようです。現在、hive 環境内でスレッドを作成し、メッセージを送信し、内部で処理します。残念ながら、これは Firefox でのみ機能し、私の Android/Phonegap アプリケーションでは機能しません。

これは私がワーカーを生成する場所です:

$(function() {

$("#mydiv").append("Start |");

$.Hive.create({
    worker : 'Worker_Parser.js',
    receive : function(data) {

    $("#mydiv").append('RECEIVED MESSAGE: ' + data.message + ' | ');
            }           
        });
$("#mydiv").append("Worker generated | ");
    });

$.Hive.get(0).send("test");

$("#mydiv").append("End ");

これはワーカー スレッドです。

importScripts('jquery.hive.pollen.js');

$(function (data) {
       $.send("test");
     });

Firefox ショー

Start | Worker generated | End | RECEIVED MESSAGE: test | 

Android Broswer は、スレッドを開始しようとするとスクリプトをキャンセルし、次のようにのみ表示します。

Start |

JQuery.hive は Android で動作するはずですか? GUI をフリーズせずに XML を解析するという私の問題を解決するより良い方法はありますか?

前もって感謝します、

トム

4

1 に答える 1

0

ここを見ると、現在の Android ブラウザーでも iOS でも Web Workers がサポートされていないことがわかります。

メニュー全体を一度に送信するのではなく、XML ファイル内のデータをさらに分割し、ユーザーの操作に基づいて小さなチャンクに分割して送信していただけますか? おそらく、メニュー リクエストを当日のみに縮小し、他の日は AJAX リクエストを開始するのでしょうか?

于 2011-09-23T10:38:25.330 に答える