【问题标题】:Cordova splash screen hangs during asynchronous requestCordova 启动画面在异步请求期间挂起
【发布时间】:2014-03-06 18:48:58
【问题描述】:

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

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

【问题讨论】:

    标签: javascript jquery-mobile cordova


    【解决方案1】:

    如果您在获得“deviceready”事件之前进行 AJAX 调用,则 可能是从本机端延迟 onPageFinished 事件 安卓。尝试将 AJAX 调用放在您的 deviceready 事件处理程序中。

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        猜你喜欢
        • 2020-06-08
        • 2014-10-06
        • 2016-11-19
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-03-12
        相关资源
        最近更新 更多