使用 Phonegap/WebWorks 的黑莓中线程过多

Posted

技术标签:

【中文标题】使用 Phonegap/WebWorks 的黑莓中线程过多【英文标题】:Too many threads in Blackberry using Phonegap/WebWorks 【发布时间】:2012-05-30 13:23:15 【问题描述】:

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

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

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

谢谢!

【问题讨论】:

您能否展示(最好是代码)您是如何管理线程的。 问题是你不能管理线程。带有 phonegap 的代码通常是纯 javascript/html 【参考方案1】:

这可能不相关,但是当我在 BB Bold 上从本机应用程序发出大量请求时,我确实遇到了类似的问题。收到应答后连接线程没有正常关闭。

尝试以下方法:

更改 GET POST。 更改 HTTP HTTPS。

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

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

【讨论】:

【参考方案2】:

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

【讨论】:

【参考方案3】:

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

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

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

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

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

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

如果一切都失败了,您还可以开发自定义 Phonegap 插件,以使用 Java Script 接口 API 执行类似的操作。

【讨论】:

以上是关于使用 Phonegap/WebWorks 的黑莓中线程过多的主要内容,如果未能解决你的问题,请参考以下文章

谷歌地图与黑莓路线

如何在黑莓中使用经度和纬度获取当前地址

在黑莓中无延迟播放音频

获取黑莓中的模块名称

黑莓中的onClose()有啥用[关闭]

如何在黑莓中运行工作灯的本机代码[关闭]