1

我正在尝试运行一段 javascript 来不断轮询服务器以获取更新。从最终用户的角度来看,在对应用程序性能影响最小的情况下,最好的方法是什么?

我尝试在单独的 iframe 中生成它,但结果性能非常糟糕。

我目前正在研究android,所以如果解决方案涉及编写一个phonegap插件来轮询服务器而不是javascript,那么现在应该没问题。轮询服务器后,我需要更新本地存储中的数据。

4

2 回答 2

2

我已经在 IOS 中实现了这一点。phonegap 的问题在于您无法创建运行 javascript 的计时器任务,因为如果您的 .html 页面发生更改,该任务将被终止。

除非您只有一个 .html 并且您正在动态更改正文部分。如果是这种情况,请在 javascript 中查找 setInterval。

如果不是这种情况,那么在 javascript 上实现某些东西不是解决方案,在 IOS 中,我已经实现了一个自定义插件来运行异步 Web 服务调用。您可以做类似的事情,编写一个运行 AsyncTask doInBackground() 的插件,然后在 javascript 中回发结果。有很多关于如何在 phonegap 中创建自定义插件的教程。希望能帮助到你

于 2012-07-03T07:39:10.630 回答
2

如果您打算仅在应用程序正在使用时进行轮询,则setInterval()效果很好。我的应用程序使用的是 jQuery Mobile,默认情况下它只更新 DOM 而不是重新加载整个页面,这样我setInterval()就可以在启动后继续运行。

Android 已经支持后台服务,您可以将其用于长时间连续运行的任务。

我与上述组合一起使用的一种解决方案:

  • 当应用程序运行时,我setInterval()会定期检查更新。
  • 在开始更新检查之前后台检查应用程序是否正在运行
  • 如果应用程序没有运行,那么我使用后台服务代码来检查服务器上是否有任何更新
  • 如果有更新,那么我会放置一个系统托盘通知来通知用户有更新在等待他
  • 他一启动应用程序,我就调用该服务来获取更新。

这样我的主要逻辑仍然在 Javascript 端,我不需要再次在 Javascript 和本机中编写相同的逻辑。

如果更新不是很频繁,那么您应该考虑使用PushNotification

于 2012-07-03T09:26:33.443 回答