我在我的 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
时出现,如果我将代码中的这部分注释掉,一切都正常工作。我非常需要以下几个问题的帮助:
- 是否有可能手动运行cordova?
- 如何使用
startForeground
启动服务,但仍然可以在杀死并重新启动应用程序后触发cordova设备已准备就绪
编辑:
在制作了两个快速示例项目之后,一个是Cordova 3.6版本(我用于实际应用程序的版本),另一个是Cordova 5.1版本,我意识到问题在新版本的Cordova中不存在。但是我不想更新,因为:
- 不要改变运行中的系统
- 由于我已经在我的应用程序中安装了许多插件,所以我不知道新版本中可能不再起作用的插件。
- 我很懒。
您有什么想法可以解决从3.6到5.1的更改,以解决错误,并且是否可以相应地更新我的3.6代码?
编辑2:
这不是此问题的副本。在这个问题中,deviceReady回调被错误地传递了。这在我的应用程序中并非如此,并且如果我不在服务中使用startForeground
,这样做是没有意义的。
useCapture
参数在事件监听结束时是否设置为false
:addEventListener('deviceready', onDeviceReady, false);
? - Ivan Gabriele