在phonegap中实现长时间运行的后台任务

时间:2012-07-03 07:25:05

标签: android cordova backgroundworker

我正在尝试运行一段javascript,它不断轮询服务器以进行更新。从最终用户的角度来看,以最小的应用程序性能影响实现此工作的最佳方法是什么。

我尝试在一个单独的iframe中生成它,但结果表现非常糟糕。

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

2 个答案:

答案 0 :(得分:2)

如果您计划仅在应用程序正在使用时进行轮询,setInterval()的效果相当不错。我的应用程序使用的是jQuery Mobile,默认情况下只更新DOM而不是重新加载整个页面,这样我的setInterval()一旦启动就会保持运行。

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

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

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

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

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

答案 1 :(得分:1)

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

除非你只有一个.html而且你正在动态改变身体部位。如果是这种情况,那么在javascript中查找setInterval。

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

相关问题