我目前正在編寫一個應用程序,顯示我們大學食堂的菜單計劃。 爲了使它與平臺無關我使用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的問題?
由於提前,
湯姆
嗯,沒有提示?也許我把問題從特殊情況縮小到了抽象:當動作(這裏:解析XML)花費幾秒鐘時,我能做些什麼來防止單選按鈕(和整個GUI)凍結?同時,我對工作線程做了一些實驗,發現在工作線程中不可能生成新的DOMparser對象。顯示小時玻璃是唯一的解決方案嗎?!? – ewok