2011-09-15 26 views
2

我目前正在編寫一個應用程序,顯示我們大學食堂的菜單計劃。 爲了使它與平臺無關我使用Phonegap; XML解析是在JQuery的幫助下完成的,佈局是使用JQuery Mobile生成的。Android上的JQuery.Hive(工作線程)

解析菜單的XML文件在我的摩托羅拉身上大約需要1-2秒。例如,如果您通過單擊單選按鈕將位置更改爲另一個自助餐廳,則GUI會凍結第二秒。我在JavaScript中找到了Worker Threads的概念,並決定將XML數據的解析委託給Worker Thread。不幸的是,我不得不發現JQuery在工作線程中不起作用:-(然後我發現插件JQuery.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"); 
    }); 

火狐顯示

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

Android的Broswer取消attemping當啓動一個線程,並只顯示腳本:

Start | 

是JQuery.hive應該到Android下運行呢? 有沒有更好的方法來解決我的解析XML而不凍結GUI的問題?

由於提前,

湯姆

+0

嗯,沒有提示?也許我把問題從特殊情況縮小到了抽象:當動作(這裏:解析XML)花費幾秒鐘時,我能做些什麼來防止單選按鈕(和整個GUI)凍結?同時,我對工作線程做了一些實驗,發現在工作線程中不可能生成新的DOMparser對象。顯示小時玻璃是唯一的解決方案嗎?!? – ewok

回答

0

Looking here,你會看到,Web Workers是不是由目前的Android瀏覽器的支持,也不由的iOS。

您可以在XML文件中進一步分解數據,並根據用戶交互以較小的塊發送數據,而不是一次發送整個菜單?也許只能將菜單請求縮小到當前的日子,並且在其他日子中發出AJAX請求?