Android上的JQuery.Hive(工作线程)

时间:2011-09-15 15:36:24

标签: javascript jquery android worker

我目前正在编写一个应用程序,显示我们大学自助餐厅的菜单计划。 为了使它与平台无关,我使用Phonegap; XML-Parsing是在JQuery的帮助下完成的,布局是使用JQuery Mobile生成的。

解析菜单的XML文件需要大约1-2秒的摩托罗拉无视。例如,如果您通过单击单选按钮将位置更改为另一个自助餐厅,则GUI将冻结此秒。我在JavaScript中找到了Worker Threads的概念,并决定将XML数据的解析委托给Worker Thread。不幸的是我不得不发现JQuery在Worker Threads中不起作用:-然后我找到了插件JQuery.hive,这似乎解决了我的问题。我现在在hive环境中创建Thread,发送消息,在里面处理它工人线程并收到答案。 不幸的是,这仅适用于Firefox,而不适用于我的Android / Phonegap-Application。

这是我生成工人的地方:

$(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下运行吗? 有没有更好的方法来解决我解析XML的问题而不冻结GUI?

提前致谢,

汤姆

1 个答案:

答案 0 :(得分:0)

Looking here,您会发现当前的Android浏览器和iOS都不支持Web Workers。

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