使用Phonegap创建Android服务? (即使关闭,也可以运行phonegap app)

时间:2012-04-27 01:59:12

标签: android cordova mobile android-intent android-service

我一直在使用Phonegap开发Android应用程序,现在想要在关闭应用程序时这样做,它仍然可以在应用程序中执行java / js代码。所以我理解我需要创建一个服务。如果我在phonegap上创建服务插件,我仍然可以执行javascript代码或只执行java吗?

有人做过这样的事吗?我发现了这个讨论,但似乎没有用:http://groups.google.com/group/phonegap/browse_thread/thread/722b0e796baa7fc6 这就是我现在所拥有的一切。

在我转向开发本土之前,如果我无法弄清楚以为我会问以前是否有人这样做过。我似乎无法找到任何类似的手机插件插件。

编辑:我有一个将Java代码作为服务执行的应用程序。但是当它调用sendjavascript时它不起作用。那么当使用phonegap关闭应用程序时,有没有办法让javascript代码在后台运行?

由于

4 个答案:

答案 0 :(得分:56)

不,不可能在后台运行Javascript代码(至少在我看来)作为服务。 Android上的Phonegap使用名为Droidgap的特殊活动,该活动托管WebView。此浏览器控件执行JavaScript。这意味着JS执行只能在此活动内部处理,无论它是否可见。

您从Google网上论坛链接的代码尝试将使用Java开发的服务绑定到DroidGap活动,因此该服务不是用JS编写的。

您可以在从DroidGap活动派生的子活动中的JS代码中进行一些后台活动。例如,在您的活动中有一个后台线程,有一个JS回调函数,让线程调用这个回调函数。

如果你真的需要服务,你必须去当地。

<强>更新
JS代码只能使用Droidgap活动执行。一个活动可以有3个状态(基于Lifecycle of activites):

  1. 可见
  2. 隐身但仍然加载
  3. 未加载
  4. 我提供了一个sample,其中我实现了一个Phonegap插件。该插件允许活动将自己注册到SMS_RECEIVED。当活动超出范围(事件onbeforeunload)时,它会取消注册,因此只处理问题1。

    如果您希望处理所有3个问题,则必须将传入的SMS意图转发给活动。未加载时,系统将自动加载并激活活动。但这不再是后台服务,只要收到短信,您的应用就会变得可见。

    如果你不想要这个(如果你真的想要后台服务),你必须提供原生实现。

答案 1 :(得分:8)

如何使用Phonegap在Android上创建服务有this article,可以提供有关您问题的一些信息。

它正在使用一个很棒的插件,以便轻松地建立一个带有phonegap的后台服务。但你不能使用JS

我没有找到让JS在后台运行的方法。但是你可以使用插件将参数从Java传递到JS,反之亦然...这非常有用。 你仍然需要用Java重写你的JS代码。 除非你确实有一个特定的理由只想要运行JS? (但不应该......)

希望对访问此页面的某些人有用。

答案 2 :(得分:4)

是的,这很简单......只需安装插件backgroundJS:

https://build.phonegap.com/plugins/430

它允许您在后台运行javascript并结合本地通知插件,您甚至可以随时向用户发送通知,请记住,这样做会导致电池耗尽更快,还要考虑这可能会导致iOS策略出现问题。祝你好运!!!

答案 3 :(得分:2)

您可以尝试添加插件 cordova-plugin-background-mode

但正如作者所说:
大多数移动操作系统都无法正式支持无限后台任务,因此不符合公共商店供应商。一个成功的激情是不保证的。 使用该插件需要您自担风险!