我正在尝试运行一段 javascript 来不断轮询服务器以获取更新。从最终用户的角度来看,在对应用程序性能影响最小的情况下,最好的方法是什么?
我尝试在单独的 iframe 中生成它,但结果性能非常糟糕。
我目前正在研究android,所以如果解决方案涉及编写一个phonegap插件来轮询服务器而不是javascript,那么现在应该没问题。轮询服务器后,我需要更新本地存储中的数据。
我正在尝试运行一段 javascript 来不断轮询服务器以获取更新。从最终用户的角度来看,在对应用程序性能影响最小的情况下,最好的方法是什么?
我尝试在单独的 iframe 中生成它,但结果性能非常糟糕。
我目前正在研究android,所以如果解决方案涉及编写一个phonegap插件来轮询服务器而不是javascript,那么现在应该没问题。轮询服务器后,我需要更新本地存储中的数据。
我已经在 IOS 中实现了这一点。phonegap 的问题在于您无法创建运行 javascript 的计时器任务,因为如果您的 .html 页面发生更改,该任务将被终止。
除非您只有一个 .html 并且您正在动态更改正文部分。如果是这种情况,请在 javascript 中查找 setInterval。
如果不是这种情况,那么在 javascript 上实现某些东西不是解决方案,在 IOS 中,我已经实现了一个自定义插件来运行异步 Web 服务调用。您可以做类似的事情,编写一个运行 AsyncTask doInBackground() 的插件,然后在 javascript 中回发结果。有很多关于如何在 phonegap 中创建自定义插件的教程。希望能帮助到你
如果您打算仅在应用程序正在使用时进行轮询,则setInterval()
效果很好。我的应用程序使用的是 jQuery Mobile,默认情况下它只更新 DOM 而不是重新加载整个页面,这样我setInterval()
就可以在启动后继续运行。
Android 已经支持后台服务,您可以将其用于长时间连续运行的任务。
我与上述组合一起使用的一种解决方案:
setInterval()
会定期检查更新。这样我的主要逻辑仍然在 Javascript 端,我不需要再次在 Javascript 和本机中编写相同的逻辑。
如果更新不是很频繁,那么您应该考虑使用PushNotification