Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/rust/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 在phonegap中实现长时间运行的后台任务_Android_Cordova_Backgroundworker - Fatal编程技术网

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

Android 在phonegap中实现长时间运行的后台任务,android,cordova,backgroundworker,Android,Cordova,Backgroundworker,我试图运行一段javascript代码,它不断轮询服务器以获取更新。从最终用户的角度来看,使其在对应用程序性能影响最小的情况下工作的最佳方法是什么 我尝试在一个单独的iframe中生成它,但是结果的性能非常差 我目前正在android上工作,因此如果解决方案涉及编写phonegap插件来轮询服务器而不是javascript,那么现在就可以了。轮询服务器后,我需要更新本地存储中的数据。我已经在IOS中实现了这一点。phonegap的问题是无法创建运行javascript的计时器任务,因为如果.ht

我试图运行一段javascript代码,它不断轮询服务器以获取更新。从最终用户的角度来看,使其在对应用程序性能影响最小的情况下工作的最佳方法是什么

我尝试在一个单独的iframe中生成它,但是结果的性能非常差


我目前正在android上工作,因此如果解决方案涉及编写phonegap插件来轮询服务器而不是javascript,那么现在就可以了。轮询服务器后,我需要更新本地存储中的数据。

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

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


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

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

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


如果不是这样,那么在javascript上实现某些东西就不是一个解决方案,在IOS中,我实现了一个用于运行异步web服务调用的自定义插件。您可以做类似的事情,编写一个运行AsyncTask doInBackground()的插件,然后在javascript中回发结果。有许多教程介绍如何在phonegap中创建自定义插件。如果您计划只在应用程序正在使用时进行轮询,
setInterval()
工作得相当好,希望这对您有所帮助。我的应用程序使用的是jQuery Mobile,默认情况下,它只更新DOM,而不是重新加载整个页面,这样一来,我的
setInterval()
在启动后会保持运行

Android已经有了对的支持,您可以将其用于长时间连续运行的任务

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

  • 当应用程序运行时,我使用
    setInterval()
    定期检查更新
  • 在启动更新检查之前,后台检查应用程序是否正在运行
  • 如果应用程序没有运行,那么我使用后台服务代码只是为了检查服务器上是否有任何更新
  • 若有更新,那个么我会放一个系统托盘通知,通知用户有更新等着他
  • 他一启动应用程序,我就给服务打电话获取更新
这样,我的主要逻辑就保留在Javascript端,我不需要再次用Javascript和native编写相同的逻辑


如果更新不是很频繁,那么你应该考虑使用<代码> PurtudioNo.<代码>

< P>如果你只打算在应用程序使用时进行投票,则 StIdValVar()/Cuth>工作得相当好。我的应用程序使用的是jQuery Mobile,默认情况下,它只更新DOM,而不是重新加载整个页面,这样一来,我的
setInterval()
在启动后会保持运行

Android已经有了对的支持,您可以将其用于长时间连续运行的任务

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

  • 当应用程序运行时,我使用
    setInterval()
    定期检查更新
  • 在启动更新检查之前,后台检查应用程序是否正在运行
  • 如果应用程序没有运行,那么我使用后台服务代码只是为了检查服务器上是否有任何更新
  • 若有更新,那个么我会放一个系统托盘通知,通知用户有更新等着他
  • 他一启动应用程序,我就给服务打电话获取更新
这样,我的主要逻辑就保留在Javascript端,我不需要再次用Javascript和native编写相同的逻辑

如果更新不是很频繁,那么你应该考虑使用<代码>推送通知< /代码>