我目前正在编写一个应用程序,显示我们大学食堂的菜单计划。为了使其独立于平台,我使用Phonegap;XML-Parsing 是在 JQuery 的帮助下完成的,布局是用 JQuery Mobile 生成的。
在我的 motorola defy 上解析菜单的 XML 文件大约需要 1-2 秒。例如,如果您通过单击单选按钮将位置更改为另一个自助餐厅,则 GUI 将冻结这一秒。我在 JavaScript 中找到了工作线程的概念,并决定将 XML 数据的解析委托给工作线程。不幸的是,我不得不发现 JQuery 在工作线程中不起作用 :-( 然后我发现插件 JQuery.hive 似乎解决了我的问题。我现在在 hive 环境中创建线程,发送消息,在内部处理它工作线程并收到答案。不幸的是,这仅适用于 Firefox,不适用于我的 Android/Phonegap-Application。
这是我生成 Worker 的地方:
$(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 在尝试启动线程时取消脚本并仅显示:
Start |
JQuery.hive 是否应该在 Android 下运行?有没有更好的方法来解决我在不冻结 GUI 的情况下解析 XML 的问题?
提前致谢,
汤姆