我正在使用Cordova开发移动应用。当用户启动应用程序时,我想启动非阻塞功能以从服务器加载数据。此功能可能需要几秒钟。
我正在使用leecrossley / cordova-plugin-background-task插件。如果我留在启动该功能的页面上,它工作正常。如果我更改页面,它将停止该功能。
有什么想法吗?
答案 0 :(得分:0)
听起来好像您正在体验网络视图限制! Cordova使用Chromium Web引擎,因此它通常遵循Chrome浏览器中实现的所有性能设置。
您可以在此处阅读有关限制问题的更多信息: https://thenextweb.com/apps/2017/01/26/chrome-throttle-background-tabs-google/#.tnw_WIKDX2EX
您的问题的解决方案是
创建一个主页面,作为应用程序的核心。这个主页面将始终打开,从而在加载新页面时保存您的脚本停止。
对于应用页面,我建议:
为每个应用页面创建一个单独的.html文件,然后通过iFrame将这些外部页面加载到主应用页面... iFrame的src可以通过javascript更新。 (这种方法的缺点是你需要编写额外的javascript来监控和控制iFrames内部发生的事件 - 从主页面。)
或
构建一个非常大的单页面应用程序;将所有应用页面包装在div中..然后创建一个javascrip菜单功能,管理显示的页面和隐藏的页面。 (这可能会导致一个庞大的.html页面,但是这种方法可以让你运行任何数量的设备可以同时处理的非阻塞脚本。)< - 这是我用了三年以上的方法,我还添加了一些iFrames以在需要时包含特殊页面模块。可以从外部文件加载CSS和JavaScript。
我相信大多数cordova开发人员实际上都使用这种单页方法!