java - Android 上的 PhoneGap 3.1 闪屏(4.2、4.3): CordovaWebView: TIMEOUT ERROR

标签 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();
}

会发生以下情况:

应用加载,启动画面 显示但不隐藏。所以过了一会儿我得到了 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.splashscreencordova plugin add org.apache.cordova.splashscreen .还对 phonegap phonegap local plugin... 进行了同样的尝试
  • 插件重新安装后:cordova build android

  • 我试图删除这一行 super.setIntegerProperty("splashscreen", R.drawable.splash);来自 ma​​in .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 版本中有记录,@JavascriptInterfacewindow.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/

相关文章:

java - 如何在CVS中分支多个模块maven项目?

java - 如果我想让我的 nvarchar 类型在 sql server 中按与它们在 java 中使用 unicode 时相同的顺序排序,应该使用什么排序规则

java - 如何在 java 1.7 上运行 JDiff

java - 如何在以下代码中创建电子邮件和密码的运行时条目?

cordova - Phonegap 数据库位置

javascript - $http 在异步方法中不起作用 - AngularJS 和 PhoneGap

java - 从不可见的 AWT 组件创建图像?

java - 从 onPostExecute 和 doInBackground 返回 boolean 值

java - 如何以编程方式获取 Material3 原色/强调色?

javascript - 在 Ionic App 中以横向全屏播放视频