我在我的 cordova 应用程序中使用了一项服务,该服务会生成 startForeground
onCreate 中的通知。如果应用程序通过滑动被杀死并重新启动,则不再触发 cordova device-ready 事件。看来cordova
重新启动应用程序时 undefined object 本身。我收到以下错误消息:
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 中,我意识到问题确实不会出现在新的 Cordova 版本。但是我真的不想更新,因为:
- 切勿触摸正在运行的系统
- 我不知道在 never 版本中什么可能不再起作用,因为我在我的应用程序中安装了许多插件。
- 我很懒。
知道从 3.6 到 5.1 有什么改变可以解决这个错误,以及我是否可以相应地更新我的 3.6 代码?
编辑2:
这不是 this question 的副本.在这个问题中错误地传递了 deviceReady 回调。在我的应用程序中并非如此,仅当我不使用 startForeground
时才工作是没有意义的为我服务。
最佳答案
您的应用生命周期似乎存在问题。当您滑动或强制关闭应用程序时,应用程序进程将被终止,因此,如果您没有在状态包中保存依赖对象或变量,则在重新启动时它们将返回为 null,因为 Activity 假设这些东西可用。你能粘贴你在 onCreate()
中的代码吗?我猜那是你定义cordova的地方。
关于android - startForeground() 导致 Cordova 出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31916453/