我正面临这个问题,因为我已经从PhoneGap 3.0.0更新到3.1.0。
11-08 15:30:54.997: E/CordovaWebView(32728): CordovaWebView: TIMEOUT ERROR!
我的主Java :
中有以下代码public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
// Splash screen
super.setIntegerProperty("splashscreen", R.drawable.splash);
super.loadUrl(Config.getStartUrl(), 10000);
mContext = getApplicationContext();
appView.addJavascriptInterface(new JSInterface(), "JSPlugin");
}
Config.xml 的相关部分:
<preference name="show-splash-screen-spinner" value="false" />
<preference name="auto-hide-splash-screen" value="true" />
<preference name="splashscreen" value="splash" />
<preference name="splashScreenDelay" value="5000" />
<feature name="SplashScreen">
<param name="android-package" value="org.apache.cordova.splashscreen.SplashScreen" />
</feature>
Index.html (onDeviceReady
运行正常,但hide()没有任何区别):
document.addEventListener("deviceready", onDeviceReady, false);
function onDeviceReady() {
navigator.splashscreen.hide();
}
应用程序加载并显示 splashscreen ,但它不会隐藏。所以一段时间后我得到了CordovaWebView: TIMEOUT ERROR!
,应用程序崩溃了。
在屏幕上我收到一个错误:
Application Error
The connection to the server was unsuccessful.
(javascript:JSPlugin.myFunction('...');)
它在Android 4.2
和Android 4.3
上崩溃,但在iOS 6
和iOS 7
上运行正常。
npm install -g cordova
cordova platform update android
cordova plugin remove org.apache.cordova.splashscreen
和cordova plugin add org.apache.cordova.splashscreen
。也尝试使用phonegap phonegap local plugin...
重新安装插件后:cordova build android
我尝试从主.java 中删除此行super.setIntegerProperty("splashscreen", R.drawable.splash);
,因为我有Config.xml
首选项<preference name="splashscreen" value="splash" />
。仍然崩溃。
删除启动画面:如果我从Config.xml
完全删除了启动画面优先选项,则应用程序会加载但很明显没有启动画面。
我也试过这个:phonegap 3.1 - Unable to hide splash screen on device ready
答案 0 :(得分:1)
我刚刚发现了为什么会这样。这很奇怪,因为最后它似乎与SplashScreen
无关。仅当splashscreen
启用时才会出现。
我有一个Init()
函数启动onDeviceReady()
。此init()
会从JAVA
调用JavaScript
函数。
我通过Javascript调用JAVA的方式是@JavascriptInterface
,JavaScript代码中有window.JSPlugin.myFunction();
。它一直有效,直到我升级到 PhoneGap 3.1 ,但在它崩溃之后。
然而,在早期的Cordova / PhoneGap版本中记录了@JavascriptInterface
和window.JSPlugin.myFunction()
方法仍然有效。
最奇怪的是为什么只有SplashScreen插件会破坏它?
是使用PhoneGap方法(无论如何我用于iOS):
cordova.exec(function(){},function(){},'com.myApp.JSPlugin','myFunction()',[]);