使用 Phonegap 创建 Android 服务? (即使关闭 Phonegap 应用程序也能运行)

我一直在使用 Phonegap 开发一个安卓应用程序,现在想让它在应用程序关闭时仍然可以执行应用程序中的 java/js 代码。所以我明白我需要创建一个服务。如果我在 phonegap 上创建了一个服务插件,我还能执行 javascript 代码还是只执行 java?

有人做过类似的事情吗? 我发现了这个讨论,但似乎并没有起到什么 http://groups.google.com/group/phonegap/browse_thread/thread/722b0e796baa7fc6 所以我现在只有这些了。

在我转向开发它的本地,如果我不能弄清楚它想我会问,如果有人这样做过。我似乎找不到任何一个电话插件做类似的事情。

编辑: 我有一个应用程序,执行 Java 代码作为一种服务。但是,当它调用 sendjavascript 时,它不工作。那么,有没有一种方法可以让 javascript 代码在后台运行,以及当应用程序关闭手机?

谢谢

68930 次浏览

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

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

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

如果你真的需要一项服务,你必须本土化。

更新:
JS 代码只能在 Droidgap 活动中执行。一个活动可以有3个状态(基于 活动的生命周期) :

  1. 看得见
  2. 看不见但还是有子弹
  3. 没上膛

我提供了一个 样本,在其中我实现了一个 Phonegap 插件。该插件允许活动将自己注册到 SMS _ RECEIVED。当活动超出范围(event onbefore unload)时,它会注销注册,因此只处理问题1。

当你想处理所有3个问题时,你必须将传入的 SMS 意图转发到活动。当没有加载时,系统将自动加载并激活活动。但是这已经不再是一个后台服务了,你的应用程序将会在收到短信的时候显示出来。

如果您不想这样(如果您真的想要一个后台服务) ,那么您必须提供一个本机实现。

有关于如何在 Android 上使用 Phonegap 创建服务的 这篇文章,它提供了一些关于您的问题的好信息。

它使用了一个很好的插件,以便建立一个后台服务与电话差容易。但是你不能用 JS

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

希望对访问这个页面的人有所帮助。

是的,而且它非常简单... 只需要安装插件背景 JS:

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

它允许你在后台运行 javascript,并结合本地通知插件,你甚至可以在任何时候发送通知给用户,只是要记住这样做会导致电池耗尽更快,也要考虑到这可能会造成 iOS 政策的问题。祝你好运! ! !

您可以尝试添加 插件 科尔多瓦-插件-背景-模式

但正如作者所言:
大多数移动操作系统不支持无限的后台任务,因此不符合公共商店供应商的要求。不能保证提交成功。 使用该插件的风险由你自己决定