【问题标题】:Phonegap application hides splashscreen too quicklyPhonegap 应用程序隐藏启动画面太快
【发布时间】:2014-05-09 10:36:47
【问题描述】:

我正在开发一个多平台 Phonegap 应用程序,并使用 Phonegap Build 服务来构建它并将其加载到设备上。我已关注文档并在网上进行了广泛搜索,但在启动画面时仍然遇到问题。应用程序启动并显示启动画面约 1 秒,然后有白色闪烁,偶尔还会在页面正常加载之前闪烁无样式的 html。我试图让启动画面持续大约 4 秒,然后正确显示初始页面,而不会出现这些烦人的闪烁——它们对用户体验产生了如此负面的影响,并让它真的感觉不像一个移动应用程序。 我无法让 config.xml 文件的任何建议元素用于指定启动画面延迟。

我在 iPad 2、iPhone 4s 和最新的 Google Nexus 上对此进行了测试,所有 3 台设备都有这个问题,iPhone 最慢,Nexus 显示非常快的闪光,但仍然是闪光。

我正在使用最新版本的 Phonegap Build,以及用于 UI 和页面转换的 jQuery mobile,所以我想知道这是否与它有关。

非常感谢任何帮助!

【问题讨论】:

    标签: android ios jquery-mobile cordova


    【解决方案1】:

    你可以在 config.xml 中试试这个

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

    当你想隐藏时,在 .js 文件中

    navigator.splashscreen.hide();
    

    【讨论】:

    • 我已经尝试过了,但没有奏效。我在 onDeviceReady 函数中有 navigator.splashscreen.hide() 肯定会受到影响,因为其他代码在其中工作。我刚刚意识到 - 如果我立即使用 splashscreen.hide() 它会导致我描述的问题,但是如果我将它包装在 5 秒的 setTimeout 中,同样的事情会在视觉上发生,但我的应用程序的“索引页面”是可见但在 5 秒内完全没有反应,太奇怪了!这就像启动画面的时间正在工作,但如果这有意义的话,它实际上并没有在屏幕上显示它?我知道的不好的解释
    • 它很奇怪,它对我来说运行良好,你已经看过文档(github.com/apache/cordova-plugin-splashscreen/blob/master/doc/…)我猜,安装插件,你使用的是什么版本的phonegap?
    • 是的,我已经看到了这一切,我一直在关注它,一遍又一遍地检查它,但进展并不顺利。我正在使用最新版本的 API:PhoneGap 3.4.0 和 PhoneGap Build 3.3。此外,我同时使用了用于弹出窗口等的 notification.dialogs 功能和网络信息功能,它们都运行良好。附带说明... iOS7 状态栏插件也根本不适合我。我只需要继续摆弄,但它应该如此简单,不幸的是我不知道为什么这些东西对我不起作用
    【解决方案2】:

    只是为了添加其他人在这里放置的内容,是的,将以下内容放入您的 config.xml,

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

    然后打电话

    navigator.splashscreen.hide();
    

    当您准备好隐藏启动画面时。但请确保您已添加启动画面插件:

    cordova plugin add cordova-plugin-splashscreen
    

    作为初始屏幕将显示(至少在 iOS 上,不能 100% 确定在没有插件的情况下启动屏幕是否可以在其他平台上工作),但您无法控制持续时间,或者没有插件就隐藏它。

    【讨论】:

      【解决方案3】:

      在安卓上试试这个:

      SplashScreenDelay(以毫秒为单位,默认为 3000):启动画面图像显示的时间量。

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

      将此&lt;preference&gt; 设置在res--&gt; xml --&gt;config.xml 文件中。

      来源链接here.

      【讨论】:

        【解决方案4】:

        你可以通过延迟来解决这个问题

        navigator.splashscreen.hide();
        

        直到一些动画帧进入应用程序(尽管这取决于您的启动/渲染情况)

        如果你使用fastdom,下面可能会做,但根据你的用例,你可能需要更大的延迟

        fastdom.defer(2, function () {
            navigator.splashscreen.hide();
        });
        

        【讨论】:

          【解决方案5】:

          您好,对我有用的解决方案是从 Build 的 WWW 文件夹本地加载 HTML,然后从那里调用我的所有其他页面。我请您检查 j Query 与 phonegap 的兼容性。始终建议使用纯 java 脚本,因为它们加载速度更快,不包含库。

          【讨论】:

          • HTML 正在本地加载,因为它是一个打包的应用程序。许多应用程序之前使用 jQuery mobile 和 Phonegap 并取得了成功,jQuery 的速度不会有明显的不同,特别是因为我在应用程序中也有本地库。应用程序的其余部分非常快,只是启动画面及其初始加载方式存在问题
          • 同意。将图像保留在启动图像中,现在检查问题。首先应该加载启动图像,然后加载 HTML。这就是我如何在 X 代码 ios 的常规选项卡中找到启动图像和大小
          • 我在 www/res/screen/blablabla.png 中为启动画面创建的图像,它正在显示,但只显示了很短的时间。我只是无法让 api 工作,所以它会显示更长时间。 (而且我使用 Windows8 和 Visual Studio 来编写我的应用程序,而不是 Xcode)
          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多