Ошибка Phonegap cordova 2.7.0 при приостановке приложения

Я создал чистый проект cordova 2.7.0, используя инструмент phonegap "create" (создать project_folder имя_компьютера имя_проекта) и я развернул приложение к моему Nexus 4 (androind 4.2.2). Никакой код не был написан.

Приложение выполнено без ошибок, поскольку оно отображает логотип телефонной карты и "устройство apache cordova готово". Проблема в том, что когда я нажимаю на стандартную правую кнопку Android (которая показывает последние запущенные приложения), я вижу в Eclipse LogCat, что ошибка ocurrs:

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(исключение уничтожить событие из native ');};)"

Такое поведение происходит всегда (иногда требуется приостановить приложение, используя кнопку списка последних приложений дважды).

Любые идеи?

Спасибо заранее.

ОБНОВЛЕНИЕ: Как было предложено Роменом Брауном, используя 2.4.0, ошибка не возникает.

Ответ 1

Эта ошибка появилась после выпуска Cordova 2.5

Но никто не нашел решения.

Я бы рекомендовал сообщить об ошибке команде phonegap и понизить версию вашей Кордовы до версии 2.4, если это возможно.

Ответ 2

Попробуйте увеличить значение тайм-аута загрузки в методе onCreate вашего Java-класс, расширяющий DroidGap:

super.setIntegerProperty("loadUrlTimeoutValue", 60000); 

Ответ 3

У меня была та же проблема, и она также была исправлена, когда я использовал 2.4, но я решил опубликовать ее как проблему в своем трекер-проблеме: https://issues.apache.org/jira/browse/CB-3749

По-видимому, для меня это произошло потому, что я удалил несколько строк в своем манифесте, потому что я нацелился на android-10, но я должен был просто настроить Android-17, поскольку сама телефонная книга работает для android-10, он.

Ответ 4

У меня была эта досадная проблема, пока я не понял, что использовал неправильный файл Cordova.js. Изменил его, и проблема исчезла. Я использую телефонную развязку 2.7.

Ответ 5

Я думаю, что эта ошибка очень широка и симптоматична для ряда проблем. У меня это получилось, когда я переопределял методы 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

Пожалуйста, не используйте метод webview.handlePause(false) в методе Activity onPause(), но вместо этого используйте только метод webview.handleDestroy() в Activity onDestroy().

Это происходит, когда пользователь повторно открывает активность, и мы исправили его таким образом в нашем приложении.

Кордова-2.5.jar