startForeground()导致cordova问题

我在我的cordova应用程序中使用一个服务,在onCreate生成一个startForeground通知。 如果应用程序通过刷卡被终止并重新启动,那么cordova设备就绪事件不会被解除。 似乎cordova对象本身没有定义,当应用程序重新启动。 我收到以下错误信息:

E/Web Console(19472): Uncaught TypeError: Object #<Object> has no method 'exec' at file:///android_asset/www/src/jsFile.js:31

31行及以下:

 cordova.exec(function (r) { if (callback) { callback(r); } }, function (err) { if (callback) { callback(false); } }, "Plugin", "functionName", []); 

这个问题只发生在我的服务中使用startForeground ,如果我注释掉这部分的代码,它就可以正常工作了。 我迫切需要一些关于这些问题的帮助:

  • 是否有可能让科多瓦手动运行?
  • 如何使用startForeground启动服务,但在杀死并重新启动应用程序后仍然触发cordova设备

编辑:

在做了两个快速的示例项目,一个在cordova3.6(我用于我的实际应用程序的版本)和cordova5.1,我意识到这个问题不会发生在新的cordova版本。 不过,我并不想更新,因为:

  • 切勿触摸正在运行的系统
  • 我不知道什么可能不再工作了,因为我已经在我的应用程序中安装了很多插件。
  • 我很懒。

任何想法可以改变从3.6到5.1,解决了这个错误,以及我是否可以相应地更新我的3.6代码?

EDIT2:

不是 这个问题的重复。 deviceReadycallback在这个问题中被错误地传递了。 在我的应用程序中,情况并非如此,只有在我的服务中不使用startForeground

看起来你有一个围绕你的应用程序生命周期的问题。 当您轻扫或强行closures应用程序时,应用程序进程将被终止,因此重新启动时,如果您没有在状态包中保存依赖对象或variables,它们将返回为空,因为活动假定这些事情可用。 你可以粘贴你的代码在onCreate()我猜这是你的定义cordova。

当JS没有写入onDeviceReady()事件callback – 或者Cordova WebView被重新加载时,当Device已经处于“就绪”状态时 – 在这种情况下,只有onDocumentReady()事件会被再次触发。

尝试设置一个testing用例,logging哪个事件被触发; DeviceDocument就绪之间的区别可能是罪魁祸首。 JS事件&Logcat的详细日志build议。

可能需要以不同的方式绑定JS事件或将代码移入它们之间,以防止出现这种情况,这种情况似乎是:在Device “准备就绪”时重新加载WebView ,可能是某种实现尝试反对在WebView实现中运行JS应用程序的概念? 没有看到最less的代码(很显然,这个“示例”不会运行,而有错误的引用),我猜Service已经运行,而应用程序无法启动它。

这可能是你要存档的function的例子 。

虽然Cordova的当前版本是7.0而不是5.1。