2

我目前正在编写一个应用程序,显示我们大学食堂的菜单计划。为了使其独立于平台,我使用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 的问题?

提前致谢,

汤姆

4

1 回答 1

0

看这里,你会看到当前的 Android 浏览器不支持 Web Workers,iOS 也不支持。

您能否在 XML 文件中进一步分解数据,并根据用户交互以更小的块发送,而不是一次发送整个菜单?也许仅将菜单请求缩小到当天并在其他日子触发 AJAX 请求?

于 2011-09-23T10:38:25.330 回答