我有一个运行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>
答案 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事件,不确定)