startForeground()导致cordova出现问题

Mic*_*nst 46 service android cordova hybrid-mobile-app

我在我的cordova应用程序中使用了一项服务,该服务在startForegroundonCreate中生成通知.如果应用程序通过滑动被杀死并再次启动,则不会再触发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", []); 
Run Code Online (Sandbox Code Playgroud)

只有在我使用startForeground我的服务时才会出现问题,如果我对代码的这一部分进行评论,那么一切正常.我迫切需要一些关于这些问题的帮助:

  • 是否可以手动运行cordova?
  • 如何启动服务startForeground,但在杀死并重新启动应用程序后仍然会触发cordova设备就绪

编辑:

在做了两个快速示例项目之后,一个在Cordova 3.6(我用于我的实际应用程序的版本)和Cordova 5.1上,我意识到新Cordova版本中不会出现问题.但是我真的不想更新,因为:

  • 切勿触摸正在运行的系统
  • 我不知道在Never版本中可能不起作用的东西,因为我在我的App中安装了很多插件.
  • 我很懒.

知道什么可以从3.6改为5.1解决了这个bug,以及我是否可以相应地更新我的3.6代码?

EDIT2:

不是这个问题的重复.在这个问题中错误地传递了deviceReady回调.在我的应用程序中不是这种情况,只有在我不使用startForeground我的服务时才工作是没有意义的.

Smi*_*ile 1

您的应用程序生命周期似乎存在问题。当您滑动或强制关闭应用程序时,应用程序进程将被终止,因此在重新启动时,如果您没有在状态包中保存依赖对象或变量,它们将返回为空,因为活动假设这些东西可用。您可以将您的代码粘贴到我onCreate()猜那是您定义的 cordova.txt 文件中吗?