问题:
自从我从 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();
}
会发生以下情况:
应用加载,启动画面 显示但不隐藏。所以过了一会儿我得到了 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
.
我试过的是:
- Cordova 更新
npm install -g cordova
- 平台更新:
cordova platform update android
- 再次删除和添加 Splashscreen 插件
cordova plugin remove org.apache.cordova.splashscreen
和cordova plugin add org.apache.cordova.splashscreen
.还对 phonegapphonegap local plugin...
进行了同样的尝试 插件重新安装后:
cordova build android
我试图删除这一行
super.setIntegerProperty("splashscreen", R.drawable.splash);
来自 main .java 因为我有Config.xml
偏好<preference name="splashscreen" value="splash" />
.仍然崩溃。删除闪屏:如果我从
Config.xml
中完全删除闪屏首选项应用加载但显然没有启动画面。我也试过这个:phonegap 3.1 - Unable to hide splash screen on device ready
最佳答案
我刚刚发现为什么会这样。这很奇怪,因为最后似乎解决方案与 SplashScreen
无关。它仍然仅在 splashscreen
被启用 时出现。
我有一个启动 onDeviceReady()
的 Init()
函数。此 init()
从 JavaScript
调用一个 JAVA
函数。
我从 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()',[]);
关于java - Android 上的 PhoneGap 3.1 闪屏(4.2、4.3): CordovaWebView: TIMEOUT ERROR,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19863260/