Cordova,Android,加载速度极慢

时间:2016-12-24 00:31:22

标签: android cordova

我有一个运行Cordova CLI 6.4.0的Cordova应用程序。在加载过程中,有一个空白的白色屏幕,在启动屏幕后加载4-6秒。同样的事情发生在app重新加载期间。在platform.ready事件之前或之内,没有事件从应用程序触发。在搜索之后,人们似乎在类似问题上取得了一些成功,所有这些都围绕着启动画面下面的配置选项,没有任何建议或想法有效。

更新

我似乎取得了一些进展,我想我更了解这里发生了什么。我在另一篇文章中将以下行添加到我的config.xml

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

现在,这两个行为是显示启动画面(很长一段时间,通常大约9秒),然后Splash消失,我的应用程序加载。所以它不再是邪恶的白色屏幕,而只是一个非常慢的加载应用程序,这是我的问题。

/更新

启动画面 - &gt; 4-6秒空白白屏 - &gt;然后app加载并且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" />

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

这在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"

这是我的完整图标/启动定义。

<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>

4 个答案:

答案 0 :(得分:5)

当您构建apk文件时,请确保包含&#34; - prod&#34;在命令中:

ionic cordova build --release --prod android

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

答案 1 :(得分:1)

找到一个其他的SO答案,但我已经解决了以下

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

该应用仍然需要永远加载(通常约9秒),但我至少避免白屏无意义。

答案 2 :(得分:1)

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

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

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

为App特定事件创建单独的javascript文件,并在index.html中链接此文件

在javascript文件中,Catch 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();

答案 3 :(得分:0)

之前我曾在Cordova遇到过这种情况。我相信我解决它的一种方法是最初加载一个空页面,然后重定向到实际的应用程序页面。你可以尝试一下吗? (您可能需要在重定向之前等待deviceready事件,不确定)