【发布时间】:2015-08-10 09:50:35
【问题描述】:
我在我的 cordova 应用程序中使用了一项服务,该服务在 onCreate 中生成 startForeground 通知。如果应用程序通过滑动被杀死并重新启动,则不再触发 cordova device-ready 事件。重新启动应用程序时,似乎未定义 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 device-ready
编辑:
在制作了两个快速示例项目后,一个在 Cordova 3.6(我用于我的实际应用程序的版本)和一个在 Cordova 5.1 中,我意识到问题确实不会出现在新的科尔多瓦版本。但是我真的不想更新,因为:
- 切勿触摸正在运行的系统
- 我不知道在 never 版本中什么可能不再起作用,因为我在我的应用程序中安装了许多插件。
- 我很懒。
知道从 3.6 到 5.1 有什么改变可以解决这个错误,以及我是否可以相应地更新我的 3.6 代码?
编辑2:
这不是this question 的副本。在这个问题中错误地传递了 deviceReady 回调。在我的应用中并非如此,仅当我在服务中不使用 startForeground 时才工作是没有意义的。
【问题讨论】:
-
您能否编辑您的问题并提供 JAVA 代码(插件代码)。
-
没关系(99.9% 肯定),因为我可以调用任何我想要的插件并且错误保持不变。
-
只是一个简单的建议:如果您仍然有问题(我猜您找到了解决方案),您的
useCapture参数是否在您的事件监听结束时设置为false:addEventListener('deviceready', onDeviceReady, false);? -
嗨伊万。是的,这是我尝试的第一件事:) 问题已通过更新cordova 得到解决(虽然这很痛苦)。还是谢谢你。
标签: android cordova service hybrid-mobile-app