1

我正在构建一个 Cordova 应用程序,我们实际上已经完成,除了该应用程序在特定条件下表现不佳的事实。在这种情况下,会进行一系列异步 ajax 调用(在收到响应时大约需要 15 秒)。一旦页面已经加载并显示,就应该进行这些调用。因此,它们是在登录页面的 onpageshow 功能中制作的。问题是 Cordova 闪屏会一直显示到通话完成。我现在唯一的理论是,Cordova 在网络安静之前不会终止启动画面。有谁知道如何让 Cordova 忽略这些服务器调用?我试图打电话cordova.exec(null, null, "SplashScreen", "hide", [])在 deviceready 上,但这似乎并没有让它消失。如果它是相关的,那么当它已经在应用程序中被调用并且用户并不聪明时,这个完全相同的服务器调用异步运行就很好。问题似乎仅在于应用程序加载。

提前感谢您的任何帮助或想法。

4

2 回答 2

0

如果您在获得“deviceready”事件之前进行 AJAX 调用,则可能会延迟 Android 原生端的 onPageFinished 事件。尝试将 AJAX 调用放在您的 deviceready 事件处理程序中。

于 2012-08-29T20:44:53.513 回答
0

我们通过在启动异步请求的函数调用上设置 1 秒超时来解决此问题。我不会接受这个作为答案,因为它更像是一种变通方法而不是一种解决方案。从我花在这个问题上的时间来看,我只能说,Cordova 似乎在等待 javascript 空闲,然后再删除启动屏幕。由于异步调用是在 javascript 自然空闲之前进行的最后一次调用,因此设置 1 秒超时似乎可行。奇怪的是,鉴于这是一个异步调用,javascript 应该在调用之后直接空闲。也许科尔多瓦也在等待网络安静下来。这只是猜测,但希望它能给未来的读者一些关于如何解决问题的想法。

于 2012-08-30T15:15:12.683 回答