我不知道您能以多快的速度加载简单的PhoneGap应用程序。
我的简单应用在Galaxy S3上需要6-8秒(所有资源都存储在本地驱动器中)。不确定PhoneGap是否正常。
谁能击败2-3秒的载入时间?有什么技巧可以使其加载更快?
最佳答案
轶事数据:
我的phonegap应用程序可以在iPad 3上加载2秒钟(从点击图标开始)。即使如此,建议您使用启动屏幕插件来保持启动,直到应用程序的UI加载完毕,以防止闪烁等。
您可以做的事情:
1)不要等待数据开始显示用户界面。
在我的一个应用程序中,文件系统提供了支持数据。尽管文件系统很快,但是没有理由在等待时阻止用户界面的初始显示。尽管暂时会有一个初始的空白界面,但这没关系-实际上,Apple的初始屏幕指导原则是将用户界面显示为未填充。 (并非大多数人都同意或遵循建议)。
如果您正在加载任何网络数据,也是如此-尽快显示UI,以消除加载缓慢的应用的感觉。然后,如果您的数据加载速度很慢,请放置一个微调器。用户将看到您的应用程序已快速加载,并且现在网络已成为瓶颈。
2)减少启动资产的大小/数量
启动时可以加载的脚本,样式表等越少越好。大多数Web视图都尽可能地合理地善于流水化这些视图,但是从根本上说,Web视图仅需要显示更多的数据才能显示UI,因此应用程序的加载时间越慢。 (这就是苹果公司关于启动屏幕的建议之所以有意义的原因:几乎立即显示一个未填充的用户界面应该可以帮助用户感觉到该应用已快速加载(即使尚未加载)。我对此说法并不完全相信。) 。!)
本质上,您应该尝试加载生成未填充的UI所需的最少资产,然后在显示剩余的资产后将其加载。如果这需要时间,请扔一个微调器。
3)将插件数量减少到应用程序功能所需的裸机数量
插件需要一些时间来初始化,因此它们在调用deviceready
之前就完成了。您拥有的插件越多,应用程序花费的时间就越长。如果可以在deviceready
之前抛出未填充的UI,则可以在某种程度上减轻这种情况,但这仅在您不完全依赖于一个或多个正在加载的插件的情况下才有效。同样,这就是启动屏幕插件有用的原因。)
4)在启动UI之前要避免任何复杂的计算
当然,如果可能的话。即使您的应用需要推送数据(例如在首次启动时创建数据库),也要先处理UI,然后再处理数据时使用微调器。如果您的应用需要计算复杂的东西,请先抛出UI,然后再计算数字。
5)了解某些加载时间超出您的控制范围
必须加载本机包装,然后包装必须初始化Web视图(这需要花费时间),然后必须加载cordova.js(以便在本机端和Web端之间建立接口)。这是您真正无法避免的事情(尽管如果您不使用Cordova的任何功能,也可以避免使用cordova.js。但是,为什么不在这种情况下构建一个更简单的shell呢?根本不需要使用Cordova。 )
6)设备差异很大
当然,一台设备上的加载时间没有任何影响,而另一台设备上的加载时间却如此。在任何平台上都是如此,尽管我怀疑由于设备成本范围广,它在Android上更常见。速度较慢的android设备显然要比顶级android模型花费更长的时间来加载您的应用程序。对于较新的设备通常也是如此。例如,如果我的应用程序可以在全新iPad上加载2秒钟,则很有可能在旧硬件上花费的时间会稍长一些。 (对我来说,我认为如果可以在2-3秒内在iPad 3上加载应用程序-这不是最新的-在更新的硬件上加载速度甚至会更快)。
最后:
我不确定这里的加载时间是否会少于1-2秒。我还可以指出,通常不难达到2-3秒的加载时间-我没有对我的大多数应用程序进行任何特别的努力,并且它们可以快速有效地加载。 (实际上,我的一个本机应用程序加载速度比我的phonegap应用程序慢-4秒比2-3。)
关于cordova - 典型的PhoneGap应用程序可以启动多快?提示加快?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/23925297/