当前位置: 首页 > 知识库问答 >
问题:

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

燕寒
2023-03-14

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

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

在我转向本机开发它之前,如果我不能弄清楚,我想我会问是否有人以前这样做过。我似乎找不到任何做类似事情的phonegap插件。

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

谢谢

共有3个答案

马业
2023-03-14

是的,而且很简单...只需安装插件后台JS:

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

它允许你在后台运行javascript,并结合本地通知插件,你甚至可以随时向用户发送通知,只要记住这样做会导致电池更快耗尽,也考虑到这可能会产生一个问题与iOS政策。祝你好运!!!

有玄天
2023-03-14

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

它使用了一个很棒的插件,以便轻松地使用phonegap构建后台服务。但是你不能使用JS

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

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

怀德馨
2023-03-14

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

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

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

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

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

  1. 可见
  2. 不可见但仍加载
  3. 未加载

我提供了一个实现Phonegap插件的示例。该插件允许活动将自身注册到SMS\U RECEIVED。当活动超出范围(事件onbeforeunload)时,它将取消注册,因此只处理问题1。

当您希望处理所有3个问题时,您必须将传入的SMS意图转发到活动。当它未加载时,系统将自动加载并激活活动。但这不再是后台服务,您的应用程序将在收到短信时可见。

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

 类似资料:
  • 我在升级PhoneGap 1时遇到了很多问题。x app到Phonegap 3.0,至少对于Android来说是这样(我甚至还没有开始升级iOS版本)。我想如果我把所有这些东西都放在一个Q里,可能会对很多人有所帮助 所以问题是:当升级现有应用到Phonegap 3.0时,你需要注意什么? 这是一本顶级手册,深入介绍了一些细节。我正在描述Mac用户的过程,但尽管命令和工具可能不同,但Windows的

  • 我正在尝试开发一个HTML5应用程序,通过PhoneGap移植到native。该应用程序是否可以在移动设备上充当服务器,在另一个移动设备上充当客户端并连接到前者?这些都在本地网络中。 我是PhoneGap的新手,我知道大多数服务器实现都在node.js或PHP等平台上,而且PhoneGap只支持超文本标记语言、CSS和JavaScript。我认为我在这里可能部分错误,因为有各种插件可以帮助简化Ph

  • 我是angularJS的新手,我正在尝试找出在angularJS phonegap应用程序中使用azure移动服务的方法。我找到了这个“angle-azure-mobile-service”https://github.com/TerryMooreII/angular-azure-mobile-service/但卡在了第三步: 这是我的原始代码: 这是我的文件结构:http://1drv.ms/1

  • 我想保持一个服务在后台运行,即使当我的应用程序被杀死。我使用的是事件,但服务只在屏幕解锁时运行。我尝试了,但下载应用程序后至少需要重新启动手机一次。 理想情况下,我将使用启动服务所有X分钟。然后检查条件(电池电量、网络连接……)在开始服务之前。 问题是这样的事件不能从声明和监听,而是在活动中,这意味着应用程序是“活动的”。 有办法做我想做的事吗?

  • 我想在android应用程序中做后台服务,即使当应用程序处于关闭、杀死或后台状态时,它也应该始终保持运行,我目前有后台服务,当应用程序最小化时,它工作得很好,但当我关闭应用程序时,杀死应用程序时,它不工作。如果应用程序死亡,套接字是关闭的,即使我使用了android隔离进程true... 我想让套接字在任何情况下都可用