1

我正在使用 phonegap 和 jquerymobile 开发一个 webworks 应用程序。我使用soapclient.js 向我的后端服务器创建soap 请求。我们面临超时问题,在详细调查期间,我们注意到第 11 个 ajax 请求始终没有响应。为了把东西放在正确的地方,我们用相同的调用重复测试重复,这样我们就知道特定的请求有效。

我们使用低端自行创建的 xmlhttprequest 对象,直到 send() 调用没有错误。第 11 次调用不会调用 onreadystate 更改侦听器。

有时,当我们等待足够长的时间时,第 11 次通话确实在大约 5 分钟左右得到兑现,这让我相信 BlackBerry 浏览器字段中存在连接泄漏。

我怀疑可以进行 10 个连接(非并行)的限制。一段时间后,当 BB 垃圾清理触发时,它会清除几个旧连接,等待队列中的新连接被执行。

更多信息

  1. 我已从服务器日志中验证,在此等待期间,服务器未收到请求
  2. 我已验证无论我使用的是 Wi-Fi 还是 GPRS,都会发生这种情况
  3. 应用程序再次开始工作,如果我关闭并重新打开它,但只到前 10 个请求

如果请求超过了我的超时期限,我试图通过调用 abort() 并将其设置为 null 来中止请求。但即便如此,如果我不等待一段时间,我也无法提出第 11 个请求。

如果这种行为是随机的,我会相信任何其他原因,例如 javascript 等待 UI 线程等。但是在第 11 次请求时它是 99% 可重现的,我已经多次重新检查代码以查看应用程序是否通知了任何变量或计数。在 .send 之前,警报可以正常工作,但不会调用回调。

我现在正在尝试创建一个非常简单的应用程序,该应用程序可以进行 ajax 调用,以查看此行为是否特定于我的应用程序,或者是否是平台限制,但如果有人以前有任何此类经验,请分享。

4

1 回答 1

0

终于经过一天的挣扎,我们发现这是由于将javascript函数分配给硬件键而发生的。由于我们在不同的 jQuery 页面下使用不同的菜单项,菜单按钮在各种 Activity 上绑定了不同的 javascript 函数,这导致了 BB WebWorks 应用程序的内存泄漏。当我们用一个全局变量绑定菜单硬件按钮并继续替换它的分配而不是一次又一次地调用绑定时,我们得到了解决。

于 2012-05-30T04:40:21.280 回答