我已经使用phonegap工具"create"创建了一个干净的cordova 2.7.0项目(创建项目文件夹package_name项目名称)我已经在我的Nexus 4 (android 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('exception firing destroy event from native');};)"
这种行为总是会发生(有时它需要通过使用最近应用列表按钮两次来暂停应用程序)。
任何想法?
提前谢谢你。
更新:根据Romain Braun使用2.4.0的建议,错误不会发生
此错误在Cordova 2.5发布后出现
但是没有人找到解决办法。
我建议向phonegap团队报告这个bug,如果可能的话,将你的Cordova版本降级到2.4。
尝试在控件的onCreate方法中增加加载超时值扩展DroidGap的Java类:
super.setIntegerProperty("loadUrlTimeoutValue", 60000);
我也有同样的问题,当我使用2.4时,它也被修复了,但我决定把它作为一个问题发布在他们的问题跟踪器上:https://issues.apache.org/jira/browse/cb - 3749
显然对我来说,这是因为我已经删除了我的清单中的几行,因为我的目标是android-10,但我应该只针对android-17,因为phonegap本身适用于android-10,而不需要我针对它。
我有这个恼人的问题,直到我意识到我使用了错误的Cordova.js文件。改变它,问题就消失了。我用的是phonegap 2.7。
我认为这个错误是非常广泛的,并且是许多问题的症状。当我在webview客户端上重写onPageFinished和onPageStarted方法时,我忘记了调用super。例如onPageFinished(view, url)。
请注意,这些方法的超时被"清除":
https://github.com/apache/cordova-android/blob/master/framework/src/org/apache/cordova/CordovaWebViewClient.java L299
我有同样的错误与Cordova 2.5和恢复到2.4。我最近尝试2.9,我不再得到错误。
请不要在Activity的onPause()方法中使用webview.handlePause(false),而只在Activity的onDestroy()方法中使用webview.handleDestroy()。
当用户重新打开activity时,它会发生,我们在我们的应用中以这种方式修复了它。
Cordova-2.5.jar