我正在與科爾多瓦一起開發移動應用程序。當用戶啓動應用程序時,我想啓動一個非阻塞函數來從服務器加載數據。此功能可能需要幾秒鐘的時間。如何讓JavaScript任務在科爾多瓦的多個屏幕上運行
我使用的是leecrossley/cordova-plugin-background-task插件。如果我留在啓動該功能的頁面上,它工作正常。如果我改變頁面,它會停止該功能。
有什麼想法?
- 喬恩
我正在與科爾多瓦一起開發移動應用程序。當用戶啓動應用程序時,我想啓動一個非阻塞函數來從服務器加載數據。此功能可能需要幾秒鐘的時間。如何讓JavaScript任務在科爾多瓦的多個屏幕上運行
我使用的是leecrossley/cordova-plugin-background-task插件。如果我留在啓動該功能的頁面上,它工作正常。如果我改變頁面,它會停止該功能。
有什麼想法?
聽起來好像你正在經歷的網絡視圖節流! Cordova使用Chromium網絡引擎,因此通常會遵循Chrome瀏覽器中實現的所有性能設置。
你可以閱讀一些在此處詳細瞭解節流問題: https://thenextweb.com/apps/2017/01/26/chrome-throttle-background-tabs-google/#.tnw_WIKDX2EX
解決你的問題是
創建一個主頁用作您的應用程序的核心。這個主頁面將一直處於打開狀態,從而在加載新頁面時保存腳本停止。
對於應用程序的網頁,我建議之一:
創建每個應用程序頁面創建一個單獨的.html文件,然後通過iframe加載這些外部網頁到您的主應用程序頁面...的將src iFrame可以通過javascript進行更新。 (這樣做的缺點的方法是,你需要編寫額外的JavaScript來監視和控制您的iFrame內所發生的事件 - 從主界面。)
或
建立一個非常大單頁面應用程序;將所有應用程序頁面封裝在div中,然後創建一個javascrip菜單功能,管理顯示的頁面和隱藏的頁面。 (這可能導致一個巨大的.html頁面,但這種方法將允許您運行任何數量的非阻塞腳本,設備可以一次處理)。< - 這是我用了三年多的方法,我還需要時添加一些iFrames以包含特殊頁面模塊。 CSS和JavaScript可以從外部文件加載。
我相信大多數科爾多瓦開發者實際上都使用這種單頁方法!
太好了,非常感謝您的詳細解答!我會研究它,看看這些是否可以爲我工作。我有一個現有的應用程序,非常可觀。 –
沒問題。請讓我知道它是否有幫助! –