【问题标题】:Cordova, Android, incredibly slow loadingCordova,Android,加载速度非常慢
【发布时间】:2016-12-24 00:31:21
【问题描述】:

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

更新

我似乎取得了一些进展,我想我对这里发生的事情有了更多的了解。根据此处的另一篇文章,我将以下行添加到我的 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" />

这很令人困惑,因为它实际上并不是我的应用程序变慢了......它只是加载位,在启动页面和应用程序加载之间有一个空白的白色屏幕,然后才会发生其他任何事情。我愿意尝试任何想法,因为它在这种状态下基本上是不可发布的。

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

【问题讨论】:

  • @Joshia 你在用离子吗?你有什么插件??由于一些有问题的插件会延迟触发设备就绪事件
  • @Gandhi 是的,我是。将插件列表添加到原始问题中

标签: android cordova


【解决方案1】:

在构建 apk 文件时,请务必在命令中包含“--prod”:

ionic cordova build --release --prod android

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

【讨论】:

    【解决方案2】:

    找到了其他一些 SO 答案,但我已经解决了以下问题

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

    应用仍然需要很长时间才能加载(通常大约 9 秒),但我至少避免了白屏废话。

    【讨论】:

      【解决方案3】:

      我们可以通过减少资产来加快应用程序的加载。但是如果不可能,那么我们可以至少改善用户体验(而不是显示空白屏幕,我们可以在加载所有资源之前显示启动画面)。

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

      &lt;preference name="AutoHideSplashScreen" value="false" /&gt;.

      为应用特定的事件创建一个单独的 javascript 文件,并在 index.html 中链接该文件

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

      【讨论】:

        【解决方案4】:

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2017-01-04
          • 1970-01-01
          • 1970-01-01
          • 2018-05-02
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2020-07-07
          相关资源
          最近更新 更多