startForeground()导致cordova

时间:2015-08-10 09:50:36

标签: android cordova service hybrid-mobile-app

我在我的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(版本I&#39; m用于我的实际应用程序)和Cordova 5.1,我意识到问题确实发生在新的Cordova版本。但是我真的不想更新,因为:

  • 永远不要触摸正在运行的系统
  • 因为我在我的应用程序中安装了很多插件,所以我不知道在never版本中可能不再有用。
  • 我懒惰。

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

EDIT2:

this question的副本。在这个问题中错误地传递了deviceReady回调。在我的应用中并非如此,只有在我不在我的服务中使用startForeground工作时才有意义。

1 个答案:

答案 0 :(得分:1)

您的应用生命周期似乎存在问题。当您滑动或强行关闭应用程序时,应用程序进程将被终止,因此如果您未在状态包中保存依赖对象或变量,则重新启动时它们将返回null,因为活动假定这些内容可用。你可以粘贴你在onCreate()猜测那些你定义的cordova所在的代码。