Phonegap 应用程序启动画面消失得太快

6
我正在开发一个跨平台的Phonegap应用程序,并使用Phonegap Build服务构建它并加载到设备上。我已经按照文档进行了操作并在网上进行了广泛搜索,但是闪屏仍然存在问题。应用程序启动并显示闪屏约1秒钟,然后出现白色闪光,有时还会在页面正确加载之前出现未经样式处理的HTML闪烁。我正在尝试使闪屏持续约4秒钟,然后正确显示初始页面,而不会出现这些恼人的闪烁-它们对用户体验产生如此负面的影响,使其真正感觉不像移动应用程序。 我无法让config.xml文件的任何建议元素起作用以指定闪屏延迟。
我已在iPad 2、iPhone 4s和最新的Google Nexus上进行了测试,所有3个设备都存在此问题,其中iPhone最慢,Nexus显示非常快的闪光,但仍然存在闪光。
我正在使用最新版本的Phonegap Build,并使用jQuery mobile进行UI和页面转换,因此想知道是否与此有关。
非常感谢您的帮助!
5个回答

3
只是为了补充其他人在这里提到的内容,是的,请将以下内容放入您的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 上,启动画面会显示(不确定是否在其他平台上没有安装插件的情况下也能正常工作),即使没有它,应用程序仍然可以运行。但是,没有插件,你无法控制启动画面的持续时间或隐藏它。


3
您可以在 config.xml 文件中尝试这个。
<preference name="SplashScreen" value="splash" />
<preference name="SplashScreenDelay" value="10000" />
<preference name="AutoHideSplashScreen" value="false" />

当您想要隐藏时,在 .js 文件中进行操作。

navigator.splashscreen.hide();

1
我已经尝试过这个方法,但它没有起作用。我在onDeviceReady函数中使用了navigator.splashscreen.hide(),这个函数肯定被调用了,因为其他代码在其中也能正常工作。但我刚刚意识到,如果我直接使用splashscreen.hide(),就会出现我描述的问题。然而,如果我将其包装在5秒的setTimeout中,视觉上会发生同样的事情,但我的应用程序的“index-page”在5秒钟内可见,但完全无响应,很奇怪!就像闪屏的时间在运行,但它实际上没有在屏幕上显示一样,如果这样说有点不清楚,抱歉。 - mbrookson
有点奇怪,我这里运行得很好。你看过文档了吗(https://github.com/apache/cordova-plugin-splashscreen/blob/master/doc/index.md),然后安装了插件?你用的 PhoneGap 版本是什么? - NEOLPAR
是的,我看到了所有这些并且一遍又一遍地跟着做了,但是还是不行。我正在使用最新版本的API:PhoneGap 3.4.0和PhoneGap Build 3.3。此外,我同时使用了notifications.dialogs功能来实现弹出窗口等功能以及network-information功能,它们都正常工作。顺便说一下...iOS7状态栏插件对我也没有用。我只能继续摆弄,但这应该很简单,不幸的是我不知道为什么这些东西对我不起作用。 - mbrookson

2
尝试在Android上使用以下方法:

SplashScreenDelay(以毫秒为单位的数字,默认值为3000):闪屏图片显示的时间。

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

将这个<preference>设置在res--> xml -->config.xml文件中。

源链接在此处。


1
您可以通过推迟

的方式解决这个问题。
navigator.splashscreen.hide();

直到应用程序启动几帧的动画之后(尽管这取决于您的启动/渲染情况)
如果您正在使用fastdom,下面的代码可能会起作用,但根据您的用例,您可能需要更大的延迟。
fastdom.defer(2, function () {
    navigator.splashscreen.hide();
});

0

嗨,对我有效的解决方案是从构建的WWW文件夹中本地加载HTML,并从那里调用所有其他页面。我建议您检查j Query与phonegap的兼容性。纯JavaScript始终是推荐的,因为它们加载更快且不包含库。


HTML是本地加载的,因为它是一个打包的应用程序。许多应用程序以前已经使用了Phonegap和jQuery mobile,并且都取得了成功,jQuery的速度几乎没有什么区别,特别是因为我还将库放在应用程序内部。应用程序的其余部分非常快,只是启动画面和初始加载方面存在问题。 - mbrookson
同意。保留启动图像,然后检查问题。首先加载启动图像,然后加载HTML。这就是我如何处理启动图像的方式,大小可以在Xcode iOS的常规选项卡中找到。 - Ravikiran
我在www/res/screen/blablabla.png中创建了启动画面的图像,它被显示出来,但只显示了很短的时间。我无法让API正常工作,以便它能够长时间显示。(我使用Windows8和Visual Studio编写我的应用程序,而不是Xcode) - mbrookson

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接