2016-12-24 24 views
6

Tôi có ứng dụng Cordova chạy Cordova CLI 6.4.0. Trong quá trình tải, có một màn hình trắng trống trong khoảng 4-6 giây sau khi tải sau màn hình giật gân. Điều này cũng xảy ra trong quá trình tải lại ứng dụng. Không có sự kiện nào phát ra từ ứng dụng, trước hoặc bên trong sự kiện platform.ready. Sau khi tìm kiếm có vẻ là một số thành công của những người cho các vấn đề tương tự, tất cả tập trung xung quanh màn hình giật gân các tùy chọn cấu hình dưới đây, không có gợi ý hoặc ý tưởng nào đã hoạt động.Cordova, Android, tải cực kỳ chậm

Cập nhật

tôi dường như đã thực hiện một số tiến bộ và tôi nghĩ rằng tôi hiểu hơn về những gì đang xảy ra ở đây. Mỗi bài khác ở đây tôi thêm các dòng dưới đây để config.xml tôi

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

Các hành vi bây giờ, với những hai, đó là màn hình Splash được hiển thị (trong một thời gian dài, thường là khoảng 9 giây), sau đó các Splash biến mất và tải ứng dụng của tôi. Vì vậy, nó không còn là một màn hình trắng của cái ác nhưng chỉ là một ứng dụng tải rất chậm đó là vấn đề của tôi.

/Cập nhật

Splash Screen -> 4-6 giây màn hình trắng trống -> Sau đó tải ứng dụng và cháy deviceReady. Điều này xảy ra với SplashScreenDelay = 2000

Hoặc nó sẽ không hiển thị màn hình giật gân và thay vào đó có 8-9 giây của màn hình trắng trống trước khi ứng dụng tải. Điều này xảy ra với SplashScreenDelay = 0

Tôi có console.logs trong trình tạo ứng dụng chính của tôi và trên nền tảng.ready, không kích hoạt cho đến khi màn hình trắng của doom được giải quyết và biến mất.

Tôi đã thử các tùy chọn bên dưới

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

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

Nó rất khó hiểu bởi vì nó không thực sự ứng dụng của tôi đó là bị chậm ... nó chỉ là các bit tải, với một màu trắng trống màn hình giữa trang splash và tải ứng dụng trước khi bất kỳ điều gì khác xảy ra. Tôi mở để thử bất kỳ ý tưởng nào vì cơ bản là không thể giải thích được ở trạng thái này.

Điều này hoàn toàn không xảy ra trên iOS, với bản dựng và cài đặt giống nhau, đó là sự cố cụ thể của Android. Thiết bị tôi đang chạy là Moto E2.

Tôi đang sử dụng Ionic và bên dưới là danh sách các plugin được bao gồm, vì có vẻ như đó là thủ phạm có khả năng nhất tại thời điểm này. Tôi sẽ phải kiểm tra mọi thứ mà không cần một số plugin để xem nó hoạt động như thế nào.

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" 

Và đây là định nghĩa biểu tượng/giật gân đầy đủ của tôi.

<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 Bạn có đang sử dụng ion không ?? Bạn có plugin nào? Vì một số plugin có sự cố trì hoãn việc kích hoạt sự kiện thiết bị sẵn sàng – Gandhi

+0

@Gandhi Vâng tôi. Thêm danh sách plugin vào câu hỏi gốc –

Trả lời

0

Tìm thấy một số khác SO trả lời, nhưng tôi đã giải quyết với các bên dưới

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

Ứng dụng vẫn sẽ mãi mãi để tải (thường là khoảng 9 giây), nhưng tôi tránh màn hình trắng vô nghĩa ít nhất.

0

Tôi đã trải nghiệm điều này với Cordova trước đây. Tôi tin rằng một cách tôi đã giải quyết là tải ban đầu một trang trống, sau đó chuyển hướng đến trang ứng dụng thực tế. Bạn có thể cho rằng một thử?(Có thể là bạn sẽ cần phải chờ đợi cho sự kiện deviceready trước khi chuyển hướng, không chắc chắn)

0

Chúng tôi có thể nhanh chóng tải ứng dụng bằng cách giảm nội dung. Nhưng nếu không thể, chúng tôi có thể không ngừng cải thiện trải nghiệm Người dùng (thay vì hiển thị màn hình trống, chúng tôi có thể hiển thị màn hình splash cho đến khi tất cả nội dung được tải).

Trong config.xml, đặt auto splashscreen thành false.

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

Tạo một file javascript riêng biệt cho các sự kiện cụ thể ứng dụng và liên kết tập tin này trong index.html

trong file javascript, Catch kiện DeviceReady. Trong trình xử lý sự kiện DeviceReady, ẩn màn hình giật gân. Xem mã bên dưới.

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

Khi bạn xây dựng apk-file, hãy chắc chắn bao gồm "--prod" trong lệnh:

ionic cordova build --release --prod android 

này sẽ tối ưu hóa hiệu suất và giảm thời gian khởi động từ 15 giây (debug xây dựng) đến 3 giây (xây dựng sản xuất) trong ứng dụng của chúng tôi.

+0

Tôi chấp nhận điều này. Nó làm việc hoàn hảo cho tôi –

Các vấn đề liên quan