【问题标题】:Phonegap cordova 2.7.0 error when pausing app暂停应用程序时出现Phonegap cordova 2.7.0错误
【发布时间】:2013-05-07 16:57:43
【问题描述】:

我使用 phonegap 工具“create”创建了一个干净的 cordova 2.7.0 项目 (创建 project_folder package_name project_name) 我已经将该应用程序部署到我的 Nexus 4 (androind 4.2.2)。 没有编写任何代码。

该应用程序已执行且没有错误,因为它显示了 phonegap 徽标和“apache cordova device is ready”。 问题是,当我点击标准的 android 右键(显示最近运行的应用程序)时,我在 eclipse LogCat 中看到出现错误:

05-07 18:29:54.957: D/webviewglue(24649): nativeDestroy view: 0x731f4738
05-07 18:30:10.163: D/DroidGap(24649): Paused the application!
05-07 18:30:10.163: D/CordovaWebView(24649): Handle the pause
05-07 18:30:10.453: W/IInputConnectionWrapper(24649): showStatusIcon on inactive InputConnection
05-07 18:30:10.743: D/DroidGap(24649): onDestroy()
05-07 18:30:10.743: D/CordovaWebView(24649): >>> loadUrl(javascript:try{cordova.require('cordova/channel').onDestroy.fire();}catch(e){console.log('exception firing destroy event from native');};)
05-07 18:30:10.743: D/PluginManager(24649): init()
05-07 18:30:10.753: D/CordovaWebView(24649): >>> loadUrlNow()
05-07 18:30:30.765: E/CordovaWebView(24649): CordovaWebView: TIMEOUT ERROR!
05-07 18:30:30.765: D/Cordova(24649): CordovaWebViewClient.onReceivedError: Error code=-6 Description=The connection to the server was unsuccessful. URL=javascript:try{cordova.require('cordova/channel').onDestroy.fire();}catch(e){console.log('exception firing destroy event from native');};
05-07 18:30:30.765: D/DroidGap(24649): onMessage(onReceivedError,{"errorCode":-6,"url":"javascript:try{cordova.require('cordova\/channel').onDestroy.fire();}catch(e){console.log('exception firing destroy event from native');};","description":"The connection to the server was unsuccessful."})

出现此错误后,我从列表中点击应用程序,然后出现一个标题为“应用程序错误”的弹出窗口,其中包含以下消息:

"连接服务器不成功。(javascript:try{cordova.require('cordova/channel').onDestroy.fire();}catch(e){console.log('异常触发从本地销毁事件');};)"

这种行为总是会发生(有时需要通过使用最近的应用列表按钮两次来暂停应用)。

有什么想法吗?

提前谢谢你。

更新:根据 Romain Braun 的建议,使用 2.4.0 不会发生错误。

【问题讨论】:

  • 可以降级到 2.4 吗?
  • 显然这个bug出现在Cordova2.5之后
  • 正如@RomainBraun 所建议的那样,使用 2.4.0 不会发生错误。谢谢!
  • 不客气。不过,将错误报告给 phonegap 团队可能是个好主意。我看到你不是唯一一个得到这个错误的人,但没有人找到解决方案。
  • 我写这个是为了回答,所以这个问题不会一直“悬而未决”。如果你能验证它,请:)

标签: cordova timeout


【解决方案1】:

此错误出现在 Cordova 2.5 发布后

但没有人找到解决办法。

我建议将错误报告给 phonegap 团队,如果可能的话,将您的 Cordova 版本降级到 2.4。

【讨论】:

  • 我已经尝试了很多解决方案,但到目前为止都没有奏效。谢谢你的建议。到目前为止看起来不错
  • 我认为我找到了问题,在this commit 中添加了评论 - 希望有人能尽快解决它:)
【解决方案2】:

尝试在您的 onCreate 方法中增加加载超时值 扩展 DroidGap 的 Java 类:

super.setIntegerProperty("loadUrlTimeoutValue", 60000); 

【讨论】:

    【解决方案3】:

    我遇到了同样的问题,并且在我使用 2.4 时也已解决,但我决定将其作为问题发布在他们的问题跟踪器上: https://issues.apache.org/jira/browse/CB-3749

    显然对我来说,这是因为我删除了清单中的几行,因为我的目标是 android-10,但我应该只针对 android-17,因为 phonegap 本身适用于 android-10,而我不必定位它。

    【讨论】:

      【解决方案4】:

      我一直遇到这个烦人的问题,直到我意识到我使用了错误的 Cordova.js 文件。改了,问题就解决了。我使用phonegap 2.7。

      【讨论】:

      • 你能提供更多细节吗?谢谢!
      【解决方案5】:

      我认为这个错误非常广泛并且是许多问题的症状。例如,当我在我的 webview 客户端上覆盖 onPageFinished 和 onPageStarted 方法并忘记调用 super.onPageFinished(view, url) 时,我得到了它。

      请注意,这些方法会“清除”超时:

      https://github.com/apache/cordova-android/blob/master/framework/src/org/apache/cordova/CordovaWebViewClient.java#L299

      【讨论】:

        【解决方案6】:

        我在使用 Cordova 2.5 时遇到了同样的错误,然后又恢复到 2.4。我最近尝试了 2.9,但不再出现错误。

        【讨论】:

          【解决方案7】:

          请不要在 Activity 的 onPause() 方法中使用 webview.handlePause(false),而只能在 Activity 的 onDestroy() 方法中使用 webview.handleDestroy()。

          当用户重新打开活动时会发生这种情况,我们在我们的应用中以这种方式修复了它。

          Cordova-2.5.jar

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2015-08-03
            • 2013-07-11
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多