2016-12-24 463 views
6

我有一台运行Cordova CLI 6.4.0的Cordova应用程序。在加载过程中,启动画面后会出现一个空白的白色屏幕,用于加载4-6秒。这同样的事情发生在应用程序重新加载。没有事件从应用程序中触发,无论是在platform.ready事件之前还是之内。搜索后,人们似乎有类似的问题取得了一些成功,所有围绕在初始屏幕下面的配置选项,没有任何建议或想法的工作。Cordova,Android,加载速度非常慢

更新

我似乎已经取得了一些进展,我想我明白多怎么在这里上。每这里另一篇文章我加入了以下行到我的config.xml中

<preference name="AutoHideSplashScreen" value="false" /> 
<preference name="SplashScreenDelay" value="10000"/> 

行为现在,有了这两个,是闪屏(很长一段时间,通常约9秒钟),然后将飞溅消失,我的应用程序加载。所以它不再是一个邪恶的白屏,而是一个非常缓慢的加载应用程序,这是我的问题。

/更新

闪屏 - > 4-6秒白屏 - >然后,将应用程序加载和deviceReady火灾。这发生在SplashScreenDelay = 2000

或者它根本不会显示启动画面,而是在应用程序加载之前有8-9秒的空白白屏。这发生在SplashScreenDelay = 0

我在我的主应用程序的构造函数和platform.ready中有console.logs,直到解决了厄运的白色屏幕并消失后才开始启动。

我曾尝试下面的选项

<preference name="SplashScreen" value="screen"/> 
<preference name="SplashScreenDelay" value="2000" /> 

<preference name="SplashScreenDelay" value="0" /> 

这是非常令人困惑,因为它实际上不是我的应用程序,就是BEING慢...它只是装载位,用空白屏幕之间的任何事情发生之前的启动页面和应用程序加载。我愿意尝试任何想法,因为在这种状态下它基本上是不可释放的。

这在iOS上完全没有发生,构建和设置都完全相同,这是Android特定的问题。我使用的设备是Moto E2。

我正在使用Ionic,下面是一个包含插件的列表,因为它似乎是目前最有可能的罪魁祸首。我将不得不测试一切,没有特定的插件,看看它是如何执行的。

cordova-plugin-console 1.0.5 "Console" 
cordova-plugin-device 1.1.4 "Device" 
cordova-plugin-facebook4 1.7.4 "Facebook Connect" 
cordova-plugin-splashscreen 4.0.1 "Splashscreen" 
cordova-plugin-statusbar 2.2.1 "StatusBar" 
cordova-plugin-whitelist 1.3.1 "Whitelist" 
ionic-plugin-keyboard 2.2.1 "Keyboard" 

这里是我的完整图标/ splash定义。

<platform name="android"> 
    <allow-intent href="market:*" /> 
    <icon platform="android" src="resources/icon.png" /> 
    <icon platform="android" qualifier="ldpi" src="resources/icons/android/icon-36-ldpi.png" /> 
    <icon platform="android" qualifier="mdpi" src="resources/icons/android/icon-48-mdpi.png" /> 
    <icon platform="android" qualifier="hdpi" src="resources/icons/android/icon-72-hdpi.png" /> 
    <icon platform="android" qualifier="xhdpi" src="resources/icons/android/icon-96-xhdpi.png" /> 
    <icon platform="android" qualifier="xxhdpi" src="resources/icons/android/icon-144-xxhdpi.png" /> 
    <icon platform="android" qualifier="xxxhdpi" src="resources/icons/android/icon-192-xxxhdpi.png" /> 
    <splash platform="android" src="resources/splash.png" /> 
    <splash platform="android" qualifier="ldpi" src="resources/screens/android/screen-ldpi-portrait.png" /> 
    <splash platform="android" qualifier="mdpi" src="resources/screens/android/screen-mdpi-portrait.png" /> 
    <splash platform="android" qualifier="hdpi" src="resources/screens/android/screen-hdpi-portrait.png" /> 
    <splash platform="android" qualifier="xhdpi" src="resources/screens/android/screen-xhdpi-portrait.png" /> 
</platform> 
+0

@Joshia你使用离子吗?你有什么插件?由于一些有问题的插件延迟发射设备准备事件 – Gandhi

+0

@甘地是的,我是。将插件列表添加到原始问题 –

回答

0

找到一个其他一些SO回答,但我已经有解决以下

<preference name="AutoHideSplashScreen" value="false" /> 
<preference name="SplashScreenDelay" value="10000"/> 

的应用程序仍然需要永远加载(通常在9秒左右),但我至少避免了白屏无稽之谈。

0

我以前曾与科尔多瓦经历过这一次。我相信我解决它的一个方法是最初加载一个空白页面,然后重定向到实际的应用程序页面。你可以试试这个吗?(这是可能的,你将需要重定向之前等待deviceready事件,不知道)

0

我们可以通过减少资产来加快应用程序的加载速度。但是,如果这是不可能的,那么我们可以改善用户体验(而不是显示空白屏幕,我们可以显示splashscreen直到所有资产都被加载)。

在config.xml中,将auto splashscreen设置为false。

<preference name="AutoHideSplashScreen" value="false" />

创建应用程序的特定事件单独的JavaScript文件和JavaScript文件中的index.html

链接此文件,抓住DeviceReady事件。在DeviceReady事件处理程序中,隐藏启动画面。请参阅下面的代码。

var app = { 
    // Application Constructor 
    initialize: function() { 
     document.addEventListener('deviceready', this.onDeviceReady.bind(this), false); 
     //You can register other plugin specific events here and handle them. 
    }, 

    onDeviceReady: function() { 
     navigator.splashscreen.hide(); 
    } 
} 
}; 

app.initialize(); 
2

当您生成APK文件时,请务必在命令中包括“--prod”:

ionic cordova build --release --prod android 

这从15秒优化性能并减少启动时间(调试版本)到3秒(生产版本)在我们的应用程序。

+0

我接受此问题。它对我来说非常合适 –