PhoneGap 3.1 Android上的Splashscreen(4.2,4.3):CordovaWebView:TIMEOUT ERROR

时间:2013-11-08 15:55:50

标签: java android cordova cordova-3

问题:

我正面临这个问题,因为我已经从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.2Android 4.3上崩溃,但在iOS 6iOS 7上运行正常。

我试过的是:

  • Cordova更新npm install -g cordova
  • 平台更新:cordova platform update android
  • 再次删除并添加Splashscreen插件cordova plugin remove org.apache.cordova.splashscreencordova 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

1 个答案:

答案 0 :(得分:1)

我刚刚发现了为什么会这样。这很奇怪,因为最后它似乎与SplashScreen无关。仅当splashscreen 启用时才会出现。

我有一个Init()函数启动onDeviceReady()。此init()会从JAVA调用JavaScript函数。

我通过Javascript调用JAVA的方式是@JavascriptInterface,JavaScript代码中有window.JSPlugin.myFunction();。它一直有效,直到我升级到 PhoneGap 3.1 ,但在它崩溃之后。

然而,在早期的Cordova / PhoneGap版本中记录了@JavascriptInterfacewindow.JSPlugin.myFunction()方法仍然有效。

最奇怪的是为什么只有SplashScreen插件会破坏它?

解决方案

是使用PhoneGap方法(无论如何我用于iOS):

cordova.exec(function(){},function(){},'com.myApp.JSPlugin','myFunction()',[]);