2016-12-24 279 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

我接受此問題。它對我來說非常合適 –