Blackberry中使用Phonegap / WebWorks的线程过多

时间:2012-05-23 23:40:55

标签: javascript multithreading blackberry cordova blackberry-webworks

我正在使用Cordova/PhoneGap开发Blackberry应用。我从服务器获取几个图像(地图图块)。此外,每60秒我发送一次位置信息。

然而,我不时地在获取图像或发送信息时,都会收到错误。如果我在模拟器上(BB 9930,OS 7.0.0.318),我收到一条AppError 104: Too many threads消息,我的应用程序崩溃了。当我在设备上测试我的应用程序(BB 8520,OS 5.0.0.592)时,不仅应用程序崩溃,而且还会重置BB。

我看过其他帖子有同样的问题(例如this onethis onethis one)。但是,在使用Cordova / PhoneGap(JavaScript)构建应用程序时,我还没有找到解决方案。

谢谢!

3 个答案:

答案 0 :(得分:0)

这可能没有关系,但是当我在BB Bold上从本机应用程序做很多请求时,我确实遇到了类似的问题。收到答案后,连接线程未正确关闭。

尝试以下方法:

  • 更改GET< - > POST。
  • 更改HTTP< - > HTTPS。

如果服务器是您的,请评估更改API以将所有图像作为一个返回,并在显示时使用偏移/剪裁。您将节省带宽并减少连接。你的应用会加载更快。

例如: http://www.ibloomstudios.com/articles/misunderstood_css_clip/

答案 1 :(得分:0)

我怀疑phoneGap API是否导致了这一点,因为它基本上是一个层。可能你的模拟器有问题吗?

答案 2 :(得分:0)

由于您还在Blackberry 8520上进行测试,因此建议您在应用程序的任何时间点保持最大线程数 - 同时运行 - 小于12

由于您使用的是Phonegap,因此可能会为您的应用程序启动这些线程。

如果设备已连接到您的系统,请将其连接到Blackberry JDE并查看哪些线程处于活动状态以分析您是否可以重新安排任务。

您是否使用AJAX获取地图图块并将位置发送到服务器?

如果您使用的是AJAX,那么您可以在JavaScript中保留一个计数器来检查请求。

此外,您是否尝试过 WebWorkers ,它们可以让您在单个线程中完成所有这些操作。

如果全部失败,您还可以开发自定义Phonegap插件,以便使用Java Script接口API执行类似操作。