TW201833792A - 用戶介面渲染方法及裝置 - Google Patents
用戶介面渲染方法及裝置 Download PDFInfo
- Publication number
- TW201833792A TW201833792A TW106137747A TW106137747A TW201833792A TW 201833792 A TW201833792 A TW 201833792A TW 106137747 A TW106137747 A TW 106137747A TW 106137747 A TW106137747 A TW 106137747A TW 201833792 A TW201833792 A TW 201833792A
- Authority
- TW
- Taiwan
- Prior art keywords
- language
- interface
- rendering
- event
- rendering engine
- Prior art date
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/30—Creation or generation of source code
- G06F8/38—Creation or generation of source code for implementing user interfaces
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/451—Execution arrangements for user interfaces
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/30—Creation or generation of source code
- G06F8/31—Programming languages or programming paradigms
- G06F8/315—Object-oriented languages
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45504—Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators
- G06F9/45529—Embedded in an application, e.g. JavaScript in a Web browser
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Computing Systems (AREA)
- User Interface Of Digital Computer (AREA)
- Stored Programmes (AREA)
Abstract
本發明揭露了一種用戶介面渲染方法及裝置。本發明中,動態語言應用運行平臺中預載入有渲染引擎,該方法包括:第一執行緒獲取待處理的用戶介面渲染事件,所述第一執行緒為所述動態語言應用運行平臺中的執行緒;第一執行緒獲取所述事件對應的用於呼叫渲染引擎的介面,根據獲取到的用於呼叫渲染引擎的介面呼叫所述渲染引擎提供的相應用戶介面渲染功能。採用本發明可實現動態語言應用運行平臺與渲染引擎的融合。
Description
本發明關於電腦技術領域,尤其關於一種用戶介面渲染方法及裝置。
JavaScript是一種動態語言,因其高效、動態、易用等特點越來越受到開發者的歡迎。Node.js是JavaScript運行環境(runtime)或稱運行平臺,提供了多種系統級的應用程式設計發展介面(Application Programming Interface,API),用於方便地搭建回應速度快、易於擴展的應用程式。 JavaScript程式的運行依賴JavaScript解譯器,在前端開發中,瀏覽器提供了這樣的環境。而Node.js提供了一套脫離瀏覽器的JavaScript運行環境,主要應用於後臺伺服器開發。 渲染引擎用於實現對用戶介面的渲染。如何在Node.js中整合用戶介面渲染能力,是目前業界需要解決的問題。
本發明實施例提供一種用戶介面渲染方法及裝置。 本發明實施例提供的用戶介面渲染方法中,動態語言應用運行平臺中預載入有渲染引擎,所述方法包括: 第一執行緒獲取待處理的用戶介面渲染事件,所述第一執行緒為所述動態語言應用運行平臺中的執行緒; 所述第一執行緒根據所述事件對應的用於呼叫渲染引擎的介面,呼叫所述渲染引擎提供的相應用戶介面渲染功能。 本發明實施例提供的用戶介面渲染裝置,包括: 獲取單元,用於獲取待處理的用戶介面渲染事件,所述第一執行緒為動態語言應用運行平臺中的執行緒;其中,所述動態語言應用運行平臺中預載入有渲染引擎; 第一處理單元,用於根據所述事件對應的用於呼叫渲染引擎的介面,呼叫所述渲染引擎提供的相應用戶介面渲染功能。 本發明實施例提供的一個或多個電腦可讀媒體,所述可讀媒體上儲存有指令,所述指令被一個或多個處理器執行時,使得通訊設備執行上述方法。 本發明實施例提供的通訊設備,包括:一個或多個處理器;以及,一個或多個電腦可讀媒體,所述可讀媒體上儲存有指令,所述指令被所述一個或多個處理器執行時,使得所述裝置執行上述方法。 本發明的上述實施例中,動態語言應用運行平臺中預載入有渲染引擎,該平臺中的第一執行緒獲取到待處理的用戶介面渲染事件後,可根據所述事件對應的用於呼叫渲染引擎的介面,呼叫所述渲染引擎提供的相應用戶介面渲染功能,從而可在該平臺中基於渲染引擎實現用戶介面渲染,實現了在該平臺中整合用戶介面渲染能力。
雖然本發明的概念易於進行各種修改和替代形式,但是其具體實施例已經通過附圖中的實例顯示並且將在本文中詳細描述。然而,應當理解,沒有意圖將本發明的概念限制為所揭露的特定形式,而是相反,意圖是覆蓋與本發明以及所附申請專利範圍一致的所有修改、等同物和替代物。 說明書中對“一個實施例”、“實施例”、“說明性實施例”等的引用,指示所描述的實施例可包括特定特徵、結構或特性,但是每個實施例可以或可以不必包括特定特徵、結構或特性。此外,這樣的短語不一定指的是相同的實施例。進一步地,認為在本領域技術人員的知識範圍內,當結合實施例描述特定特徵、結構或特性時,結合無論是否明確描述的其它實施例影響這樣的特徵,結構或特性。另外,應當理解,以“A、B和C中的至少一個”的形式包括在列表中的專案可以表示(A);(B);(C);(A和B);(A和C);(B和C);或(A、B和C)。類似地,以“A、B或C中的至少一個”的形式列出的專案可以表示(A);(B);(C);(A和B);(A和C);(B和C)或(A、B和C)。 在一些情況下,所揭露的實施例可以在硬體、韌體、軟體或其任何組合中實現。所揭露的實施例還可以被實現為由一個或多個暫時性或非暫時性機器可讀(例如,電腦可讀)儲存媒體攜帶或儲存的指令,其可以由一個或多個處理器讀取和執行。機器可讀儲存媒體可以體現為用於以機器可讀形式(例如,揮發性或非揮發性記憶體、媒體盤或其他媒體)儲存或傳輸資訊的任何儲存設備、機制或其他物理結構的設備)。 在附圖中,一些結構或方法特徵可以以特定佈置和/或順序顯示。然而,應當理解,可能不需要這樣的具體佈置和/或排序。相反,在一些實施例中,這些特徵可以以與說明性附圖中所示不同的方式和/或順序來佈置。另外,在特定圖中包括結構或方法特徵並不意味著暗示這種特徵在所有實施例中都是需要的,並且在一些實施例中可以不包括或可以與其他特徵組合。 作業系統用於向用戶應用提供作業系統的基礎能力,可基於動態語言應用運行平臺實現,從而為動態語言應用提供運行環境。其中,Node.js即為JavaScript的運行環境或運行平臺。動態語言應用運行平臺中預載入有多種模組,稱為公共模,用於提供特定功能,例如系統服務功能。 其中,動態語言是電腦程式設計語言中的一個語言類別,是一類在運行時可以動態地改變類型、結構的語言,在運行時函數和屬性可以被增加、修改和刪除。例如JavaScript、Python、Ruby等都屬於動態語言。動態語言不需要編譯即可運行,在運行時需要運行環境的支援,這個環境叫做運行時環境,它包含動態語言運行所需要的所有要素,例如Java虛擬機器、JavaScript引擎等。 以雲作業系統(雲OS)中的Host系統為例,它可基於Node.js實現。Node.js是JavaScript的運行環境,是建立在Chrome上的JavaScript引擎的Web應用程式框架,也就是說,作業系統基於Node.js向用戶應用提供作業系統的基礎能力。Node.js中包括多種模組,稱為公共模組,這些模組可通過將用於實現特定功能的代碼(例如實現作業系統級服務功能的代碼)進行封裝得到,例如可封裝為元件形式,例如這些模組中可包括實現全球定位系統(Global Positioning System,簡稱GPS)定位功能的元件、實現電源管理功能的元件等。這些模組的介面被暴露給應用層,應用層中的應用程式可通過呼叫這些模組的介面,通過JavaScript引擎解析模組中的代碼,執行這些模組提供的方法,從而實現這些模組提供的功能。 目前,後臺伺服器應用一般運行於Node.js。後臺伺服器應用的用戶介面使用渲染引擎進行渲染。而渲染引擎大多專注於圖形介面渲染,忽略了程式設計所需的其他公共模組的整合。使用這樣的渲染引擎進行用戶介面開發,需要編寫或整合大量的公共模組,效率低下。Node.js雖然提供了豐富的JavaScript API,開發者可以利用它提供的模組快速開發功能,但缺失了用戶介面渲染能力。 對此,本發明實施例提供了一種將渲染引擎與Node.js相融合的方案。下面結合附圖對本發明實施例進行詳細描述。 圖1實例性地顯示了一種作業系統架構100。架構100包括應用層10、應用框架層20和作業系統層30。應用層10中包括一個或多個應用。應用框架層20包括動態語言應用運行平臺(例如Node.js)。作業系統層30主要用於提供作業系統層級的代碼庫以及基本的系統服務,例如提供的系統服務可包括設備驅動服務、事件管理服務等。 本發明實施例基於上述架構,使渲染引擎可以存取到如Node.js等的動態語言應用運行平臺提供的能力。下面結合附圖對本發明實施例進行詳細描述。 動態語言應用運行平臺啟動時可預載入各種公共模組,並可進一步地將渲染引擎作為動態語言應用運行平臺的標準模組進行預載入。 以動態語言應用運行平臺為Node.js為例,Node.js啟動過程中,Node.js進程被創建。Node.js進程預載入各種能力,這裡所說的“能力”也可稱為資源,可包括前述所描述的用於實現特定功能的模組(例如元件),還可以包括一些配置資訊和/或資源等,例如上下文、事件佇列等。Node.js所預載入的能力中至少包括渲染引擎,進一步還可包括Node.js提供的能力。其中,Node.js提供的能力可包括:Node.js中的公共模組(例如用於提供特定功能或服務的元件)和/或JavaScript運行環境相關資訊。Node.js中的公共模組可通過對用於實現特定功能的JavaScript代碼封裝得到。每個模組均具有介面(例如API),可提供給應用層供應用程式呼叫。JavaScript運行環境相關資訊可包括但不限於JavaScript引擎的上下文、事件迴圈相關配置中的一種或多種。其中,上下文用於描述引擎內部的各種物件、狀態和功能。JavaScript引擎的上下文中可包括由Node.js進程所預載入的模組的介面(如API)。事件迴圈相關配置具體可包括Node.js的事件佇列的配置,例如事件佇列所在的記憶體區域位置、佇列大小等。 在一些實施例中,Node.js進程可將預載入的能力(例如渲染引擎)封裝為Node.js中的標準模組,作為Node.js的一個標準模組預載入的Node.js中,圖2實例性地顯示了預載入有渲染引擎的Node.js的示意圖。 在一些實施例中,渲染引擎可由動態語言(如JavaScript語言)實現,即,渲染引擎中包含的函數由動態語言(如JavaScript語言)編寫。在另外一些實施例中,渲染引擎的實現可分為兩部分,其中為了性能考慮和多執行緒的利用,部分採用c/c++等自然語言實現,而另外的部分則採用動態語言,例如JavaScript語言實現。當然,渲染引擎也可以全部由c/c++等自然語言實現。 對於全部或部分由c/c++等自然語言實現的渲染引擎,渲染引擎可提供該自然語言的API(該API用於呼叫渲染引擎提供的基於該自然語言實現的用戶介面渲染功能,即,呼叫渲染引擎中包含的該自然語言編寫的函數),而動態語言應用運行平臺支援動態語言,例如Node.js支援JavaScript語言,因此需要將渲染引擎提供的自然語言API(如c/c++ API)映射為動態語言應用運行平臺(如Node.js)支援的動態語言API(如JavaScript API),並將映射得到的API提供給應用層,動態語言應用運行平臺(如Node.js)中保存該API的映射關係。圖3實例性地顯示了渲染引擎的API映射關係示意圖。其中,渲染引擎中可包括多種元件,例如Window system元件(視窗系統元件)、UI Elements元件(用戶介面部件元件)、Layout元件(佈局元件)、Event Handling元件(事件處理元件)等,這些符合c/c++標準的元件的API被一一映射為對應的符合JavaScript標準的API。 對於全部由動態語言(如JavaScript語言)實現的渲染引擎,由於渲染引擎可提供動態語言API(該API用於呼叫渲染引擎提供的基於該自然語言實現的用戶介面渲染功能,即,呼叫渲染引擎中包含的該自然語言編寫的函數),而動態語言運行平臺(如Node.js)支援動態語言,例如JavaScript語言,因此無需進行API映射。 在一些實施例中,進一步地,動態語言應用運行平臺中預載入的能力還可包括但不限於以下中的一種或多種組合: 作業系統提供的能力 作業系統提供的能力可包括:作業系統層提供的系統服務等。作業系統層中可包括用於提供系統服務的模組,這些模組可由用於實現特定能力的代碼封裝得到。每個模組均具有介面(例如API)。本發明實施例中,可通過將作業系統層中的模組的API添加到動態語言引擎(如JavaScript引擎)的上下文中,實現對作業系統能力的預載入。 用戶自訂的能力 用戶自訂的能力,即用戶自訂的用於實現特定功能的代碼,可被封裝為模組,每個模組均具有介面(如API)。本發明實施例中,可通過將用戶自訂的模組的API添加到動態語言引擎(如JavaScript引擎)的上下文中,實現對用戶自訂能力的預載入。 圖4以動態語言應用運行平臺為Node.js為例,實例性地顯示了預載入渲染引擎後應用進程中的相關資源的示意圖。如圖所示,應用進程中包括Node.js執行緒,Node.js執行緒基於Node.js的事件迴圈機制進行用戶介面渲染等事件的處理。Node.js執行緒可基於渲染引擎實現用戶介面渲染。作為一個例子,Node.js執行緒可通過呼叫渲染引擎提供的介面實現應用程式用戶介面渲染,通過呼叫公共模組1提供的介面實現網路連接功能,通過呼叫公共模組2提供的介面實現設備能力查詢功能,通過呼叫公共模組3提供的介面實現事件管理功能。 圖5實例性地顯示了渲染引擎的結構示意圖。渲染引擎的實現可分為兩部分。為了性能考慮和多執行緒的利用等,一部分可使用自然語言實現(如c/c++等語言),另一部分使用動態語言實現(如JavaScript)。以自然語言為c/c++、動態語言為JavaScript為例,如果Node.js執行緒需要呼叫渲染引擎中由JavaScript實現的部分,則基於JavaScript API呼叫該部分中對應的函數;如果Node.js執行緒需要呼叫渲染執行緒中由c/c++實現的部分,則向JavaScript虛擬機器發送呼叫指令,該呼叫指令中包括JavaScript API,JavaScript虛擬機器將該JavaScript API映射為對應的c/c++ API,並基於映射得到的c/c++ API呼叫渲染引擎中由c/c++的實現部分中的相應函數,以實現用戶介面渲染功能。 圖6以Node.js為例,實例性地顯示了本發明實施例提供的Node.js資源載入過程。該過程實例性地描述了Node.js啟動過程。如圖所示,在S610中,Node.js進程啟動(例如啟動JavaScript應用程式時則啟動對應的Node.js進程)。在S611~S613中,Node.js進程執行初始化過程,在該過程中,Node.js進程預載入渲染引擎以及公共模組,所述公共模組可包括網路模組、系統模組等。具體預載入過程可參見前述實施例的描述。 圖7實例性地顯示了本發明實施例提供的用戶介面渲染流程。如圖所示,在S701中,第一執行緒獲取待處理的用戶介面渲染事件;在S702中,第一執行緒根據所述事件對應的用於呼叫渲染引擎的介面,呼叫所述渲染引擎提供的相應用戶介面渲染功能。其中,第一執行緒可以是Node.js執行緒。作為一個實例,用戶介面渲染事件可在以下情況下生成:由用戶操作行為導致的需要刷新用戶介面的情況(例如,用戶通過觸控操作進行應用程式的切換,因此需要刷新螢幕顯示內容,以顯示切換到的目標應用程式的用戶介面);再例如,用戶點擊用戶介面中的一個功能按鍵來打開一個頁面時,可生成用戶介面渲染事件。 進一步地,如果第一執行緒對應的應用還基於公共模組介面呼叫了公共模組提供的功能,則在S703中,第一執行緒根據所述事件對應的用於呼叫公共模組的介面,呼叫所述公共模組提供的相應公共功能。 可選地,如前所述,渲染引擎提供的介面包括自然語言介面,該自然語言介面被映射為動態語言介面,該自然語言介面用於呼叫渲染引擎中基於該自然語言提供的用戶介面渲染功能,動態語言為Node.js支援的動態語言,則在S702中,Node.js執行緒可獲取所述事件對應的用於呼叫渲染引擎的動態語言介面,將獲取到的動態語言介面映射為對應的自然語言介面,根據映射得到的自然語言介面呼叫渲染引擎提供的相應用戶介面渲染功能。在一些例子中,具體過程可參見圖5所示。 Node.js採用事件迴圈(Event loop)機制。本發明實施例中,渲染引擎被預載入到Node.js中,因此渲染引擎的事件與Node.js的事件可基於Node.js的事件佇列進行事件迴圈。在沒有事件發生的情況下,事件迴圈處於等候狀態並阻塞,當Node.js或者渲染引擎有事件發生時,會將事件迴圈喚醒。例如,當渲染引擎有事件發生時,可通過非同步方式喚醒事件迴圈,該渲染引擎的事件被儲存於事件佇列。該事件佇列通常採用先進先出的機制。 圖8以Node.js為例,實例性地顯示了本發明實施例的事件迴圈機制。如圖所示,Node.js的事件和渲染引擎的事件按照發生的先後順序被儲存在事件佇列中。Node.js執行緒從事件佇列中讀取事件進行回應時,如果當前讀取到的是用戶介面渲染事件,則根據該用戶介面渲染事件對應的用於呼叫渲染引擎的介面,呼叫渲染執行緒中相應的功能,以實現用戶介面渲染功能,如果當前讀取的是其他Node.js事件,則根據讀取到的Node.js事件所對應的用於呼叫公共模組的介面,呼叫相應的功能模組,從而實現了將渲染引擎中的事件處理融入到了Node的事件迴圈中。 可選地,可採用非同步處理機制對事件進行處理。具體地,可向Node.js執行緒註冊回調函數,該回調函數用於在有用戶介面渲染事件發生時通知Node.js執行緒。這樣,當有用戶介面渲染事件進入佇列時,可通過該回調函數通知Node.js進程,Node.js進程可在接收到該回調函數的通知後,從Node.js事件佇列中獲取待處理的用戶介面渲染事件。 可選地,可由另外的執行緒對Node.js事件佇列進行管理。為描述方便,此處將用於管理Node.js事件佇列的執行緒稱為事件執行緒。事件執行緒可與作業系統對接,從作業系統接收作業系統相關事件,並將該作業系統相關事件儲存在Node.js事件佇列。其中,所述作業系統相關事件可包括但不限於:按鍵事件(key event)、觸控事件(touch event)、渲染事件(render event)。 通過以上描述可以看出,本發明的上述實施例中,Node.js中包括公共模組和渲染引擎,Node.js執行緒獲取到待處理的用戶介面渲染事件後,一方面可獲取所述事件對應的用於呼叫渲染引擎的介面,根據獲取到的用於呼叫渲染引擎的介面呼叫所述渲染引擎提供的相應用戶介面渲染功能,另一方面可獲取所述事件對應的用於呼叫公共模組的介面,根據獲取到的用於呼叫公共模組的介面呼叫所述公共模組提供的相應公共功能。由此可見,由於Node.js中包括渲染引擎,因此一方面可在Node.js中基於渲染引擎實現用戶介面渲染,另一方面,由於Node.js中還包括公共模組,因此第一執行緒還可在Node.js中基於公共模組實現公共功能,從而在Node.js中整合了用戶介面渲染能力,為開發者進行程式開發提供了方便,即開發者僅需開發可在Node.js中運行的應用程式,該應用程式即可使用Node.js中的公共模組提供的公共功能,還可以使用Node.js中的渲染引擎提供的用戶介面渲染功能。 本發明的上述實施例可應用於行動終端,例如手機、智慧穿戴設備、車載設備、PDA等。以應用於基於雲作業系統的手機為例,採用本發明實施例,可由Node.js執行緒基於渲染引擎實現用戶介面渲染,從而使得用戶介面渲染操作可使用Node.js所提供的能力,實現了Node.js與渲染引擎的融合。 基於相同的技術構思,本發明實施例還提供了一種用戶介面渲染裝置,可實現前述實施例描述的用戶介面渲染流程。 圖9實例性地顯示了本發明實施例提供的用戶介面渲染裝置的結構示意圖。該裝置可包括:獲取單元901、第一處理單元902,可選地,還可包括第二處理單元903,其中: 獲取單元901,用於獲取待處理的用戶介面渲染事件,所述第一執行緒為動態語言應用運行平臺中的執行緒;其中,所述動態語言應用運行平臺中預載入有渲染引擎; 第一處理單元902,用於獲取所述事件對應的用於呼叫渲染引擎的介面,根據獲取到的用於呼叫渲染引擎的介面呼叫所述渲染引擎提供的相應用戶介面渲染功能。 可選地,所述動態語言應用運行平臺中還預載入有公共模組,第二處理單元903用於獲取所述事件對應的用於呼叫公共模組的介面,根據獲取到的用於呼叫公共模組的介面呼叫所述公共模組提供的相應公共功能。 可選地,所述渲染引擎提供的介面包括第一語言介面,所述第一語言介面被映射為第二語言介面,所述第一語言介面用於呼叫所述渲染引擎中基於所述第一語言提供的用戶介面渲染功能,所述第二語言為所述動態語言應用運行平臺支援的動態語言。第一處理單元902具體用於:獲取所述事件對應的用於呼叫渲染引擎的第二語言介面,將獲取到的第二語言介面映射為對應的第一語言介面,根據映射得到的第一語言介面呼叫所述渲染引擎提供的相應用戶介面渲染功能。 可選地,第一處理單元902具體用於:向第二語言虛擬機器發送呼叫指令,所述呼叫指令中包括用於呼叫渲染引擎的第二語言介面,所述呼叫指令用於觸發所述第二語言虛擬機器將所述第二語言介面映射為對應的第一語言介面,並基於映射得到的第一語言介面呼叫所述渲染引擎提供的相應用戶介面渲染功能。 可選地,獲取單元901具體用於:在接收到回調函數的通知後,從所述動態語言應用運行平臺事件佇列中獲取待處理的用戶介面渲染事件;其中,所述回調函數用於在有用戶介面渲染事件進入所述事件佇列時通知所述第一執行緒。 可選地,所述動態語言應用運行平臺包括Node.js,所述第二語言包括JavaScript語言。 基於相同的技術構思,本發明實施例還提供了一種裝置1000,該裝置1000可實現前述實施例描述的流程。 圖10實例性地顯示了根據各種實施例的實例裝置1000。裝置1000可包括一個或多個處理器1002,系統控制邏輯1001耦接於至少一個處理器1002,非揮發性記憶體(non-volatile memory,NMV)/記憶體1004耦接於系統控制邏輯1001,網路介面1006耦接於系統控制邏輯1001。 處理器1002可包括一個或多個單核處理器或多核處理器。處理器1002可包括任何一般用途處理器或專用處理器(如影像處理器、應用處理器基頻處理器等)的組合。 一個實施例中的系統控制邏輯1001,可包括任何適當的介面控制器,以提供到處理器1002中的至少一個的任何合適的介面,和/或提供到與系統控制邏輯1001通訊的任何合適的設備或元件的任何合適的介面。 一個實施例中的系統控制邏輯1001,可包括一個或多個記憶體控制器,以提供到系統記憶體1003的介面。系統記憶體1003用來載入以及儲存資料和/或指令。例如,對應裝置1000,在一個實施例中,系統記憶體1003可包括任何合適的揮發性記憶體。 NVM/記憶體1004可包括一個或多個有形的非暫時的電腦可讀媒體,用於儲存資料和/或指令。例如,NVM/記憶體1004可包括任何合適的非揮發性儲存裝置,如一個或多個硬碟(hard disk device,HDD),一個或多個光碟(compact disk,CD),和/或一個或多個數位多功能光碟(digital versatile disk,DVD)。 NVM/記憶體1004可包括儲存資源,該儲存資源實體上是該系統所安裝的或者可以被存取的設備的一部分,但不一定是設備的一部分。例如,NVM/記憶體1004可經由網路介面1006被網路存取。 系統記憶體1003以及NVM/記憶體1004可分別包括臨時的或持久的指令1010的副本。指令1010可包括當由處理器1002中的至少一個執行時導致裝置1000實現6描述的方法之一或組合的指令。各實施例中,指令1010或硬體、韌體,和/或軟體元件可另外地/可替換地被置於系統控制邏輯1001,網路介面1006和/或處理器1002。 網路介面1006可包括一個接收器來為裝置1000提供無線介面來與一個或多個網路和/或任何合適的設備進行通訊。網路介面1006可包括任何合適的硬體和/或韌體。網路介面1006可包括多個天線來提供多輸入多輸出無線介面。在一個實施例中,網路介面1006可包括一個網路介面卡、一個無線網路介面卡、一個電話數據機,和/或無線數據機。 在一個實施例中,處理器1002中的至少一個可以與用於系統控制邏輯的一個或多個控制器的邏輯一起封裝。在一個實施例中,處理器中的至少一個可以與用於系統控制邏輯的一個或多個控制器的邏輯一起封裝以形成系統級封裝。在一個實施例中,處理器中的至少一個可以與用於系統控制邏輯的一個或多個控制器的邏輯整合在相同的晶粒上。在一個實施例中,處理器中的至少一個可以與用於系統控制邏輯的一個或多個控制器的邏輯整合在相同的晶粒上以形成系統晶片。 裝置1000可進一步包括輸入/輸出裝置1005。輸入/輸出裝置1005可包括用戶介面意於使用戶與裝置1000進行互動,可包括週邊元件介面,其被設計為使得週邊元件能夠與系統互動,和/或,可包括感測器,意於確定環境條件和/或有關裝置1000的位置資訊。
100‧‧‧作業系統架構
10‧‧‧應用層
20‧‧‧應用框架層
30‧‧‧作業系統層
901‧‧‧獲取單元
902‧‧‧第一處理單元
903‧‧‧第二處理單元
1000‧‧‧裝置
1001‧‧‧系統控制邏輯
1002‧‧‧處理器(一個或多個)
1003‧‧‧系統記憶體
1004‧‧‧NVM/記憶體
1005‧‧‧輸入/輸出裝置
1006‧‧‧網路介面
1010‧‧‧指令
本發明的實施例通過實例而非限制的方式顯示在所附附圖中,類似的附圖標記表示類似的元素。 圖1根據一些實施例實例性地顯示了作業系統架構100; 圖2根據一些實施例實例性地顯示了預載入有渲染引擎的Node.js的示意圖; 圖3根據一些實施例實例性地顯示了渲染引擎的介面映射關係示意圖; 圖4根據一些實施例實例性地顯示了預載入渲染引擎後Node.js資源的示意圖; 圖5根據一些實施例實例性地顯示了渲染引擎的結構示意圖; 圖6根據一些實施例實例性地顯示了Node.js預載入示意圖; 圖7根據一些實施例實例性地顯示了用戶介面渲染流程示意圖; 圖8為根據一些實施例實例性地顯示了事件迴圈機制示意圖; 圖9根據一些實施例實例性地顯示了用戶介面渲染裝置的結構示意圖; 圖10根據一些實施例實例性地顯示了一種裝置示意圖。
Claims (17)
- 一種用戶介面渲染方法,動態語言應用運行平臺中預載入有渲染引擎,所述方法包括: 第一執行緒獲取待處理的用戶介面渲染事件,所述第一執行緒為所述動態語言應用運行平臺中的執行緒; 所述第一執行緒根據所述事件對應的用於呼叫渲染引擎的介面,呼叫所述渲染引擎提供的相應用戶介面渲染功能。
- 如申請專利範圍第1項所述的方法,其中,所述動態語言應用運行平臺中還預載入有公共模組,所述方法還包括: 所述第一執行緒根據所述事件對應的用於呼叫公共模組的介面,呼叫所述公共模組提供的相應公共功能。
- 如申請專利範圍第2項所述的方法,其中,所述公共模組包括以下模組中的一種或多種: 網路模組,用於提供網路連接功能; 系統模組,用於提供系統服務功能。
- 如申請專利範圍第1至3項中任一項所述的方法,其中,所述渲染引擎提供的介面包括第一語言介面,所述第一語言介面被映射為第二語言介面,所述第一語言介面用於呼叫所述渲染引擎中基於所述第一語言提供的用戶介面渲染功能,所述第二語言為所述動態語言應用運行平臺支援的動態語言; 所述第一執行緒根據所述事件對應的用於呼叫渲染引擎的介面,呼叫所述渲染引擎提供的相應用戶介面渲染功能,包括: 所述第一執行緒獲取所述事件對應的用於呼叫渲染引擎的第二語言介面,將獲取到的第二語言介面映射為對應的第一語言介面,根據映射得到的第一語言介面呼叫所述渲染引擎提供的相應用戶介面渲染功能。
- 如申請專利範圍第4項所述的方法,其中,根據映射得到的第一語言介面呼叫所述渲染引擎提供的相應用戶介面渲染功能,包括: 所述第一執行緒向第二語言虛擬機器發送呼叫指令,所述呼叫指令中包括用於呼叫渲染引擎的第二語言介面; 所述第二語言虛擬機器將所述第二語言介面映射為對應的第一語言介面,並基於映射得到的第一語言介面呼叫所述渲染引擎提供的相應用戶介面渲染功能。
- 如申請專利範圍第1至3項中任一項所述的方法,其中,第一執行緒獲取待處理的用戶介面渲染事件,包括: 所述第一執行緒在接收到回調函數的通知後,從所述動態語言應用運行平臺事件佇列中獲取待處理的用戶介面渲染事件;其中,所述回調函數用於在有用戶介面渲染事件進入所述事件佇列時通知所述第一執行緒。
- 如申請專利範圍第6項所述的方法,其中,還包括: 第二執行緒從作業系統接收作業系統相關事件,並將所述作業系統相關事件儲存在所述事件佇列;其中,所述作業系統相關事件中包括用戶介面渲染事件。
- 如申請專利範圍第1至3項中任一項所述的方法,其中,還包括: 所述動態語言應用運行平臺啟動時,將所述渲染引擎提供的第一語言介面映射為第二語言介面,並保存所述渲染引擎提供的第一語言介面與映射得到的第二語言介面之間的映射關係資訊; 將介面映射後的渲染引擎載入到所述動態語言應用運行平臺中。
- 如申請專利範圍第1至3項中任一項所述的方法,其中,所述動態語言應用運行平臺包括Node.js,所述第二語言包括JavaScript語言。
- 一種用戶介面渲染裝置,其中,包括: 獲取單元,用於獲取待處理的用戶介面渲染事件,所述第一執行緒為動態語言應用運行平臺中的執行緒;其中,所述動態語言應用運行平臺中預載入有渲染引擎; 第一處理單元,用於根據所述事件對應的用於呼叫渲染引擎的介面,呼叫所述渲染引擎提供的相應用戶介面渲染功能。
- 如申請專利範圍第10項所述的裝置,其中,所述動態語言應用運行平臺中還預載入有公共模組,所述裝置還包括: 第二處理單元,用於獲取所述事件對應的用於呼叫公共模組的介面,根據獲取到的用於呼叫公共模組的介面呼叫所述公共模組提供的相應公共功能。
- 如申請專利範圍第10或11項所述的裝置,其中,所述渲染引擎提供的介面包括第一語言介面,所述第一語言介面被映射為第二語言介面,所述第一語言介面用於呼叫所述渲染引擎中基於所述第一語言提供的用戶介面渲染功能,所述第二語言為所述動態語言應用運行平臺支援的動態語言; 所述第一處理單元具體用於:獲取所述事件對應的用於呼叫渲染引擎的第二語言介面,將獲取到的第二語言介面映射為對應的第一語言介面,根據映射得到的第一語言介面呼叫所述渲染引擎提供的相應用戶介面渲染功能。
- 如申請專利範圍第12項所述的裝置,其中,所述第一處理單元具體用於: 向第二語言虛擬機器發送呼叫指令,所述呼叫指令中包括用於呼叫渲染引擎的第二語言介面,所述呼叫指令用於觸發所述第二語言虛擬機器將所述第二語言介面映射為對應的第一語言介面,並基於映射得到的第一語言介面呼叫所述渲染引擎提供的相應用戶介面渲染功能。
- 如申請專利範圍第10或11項所述的裝置,其中,所述獲取單元具體用於: 在接收到回調函數的通知後,從所述動態語言應用運行平臺事件佇列中獲取待處理的用戶介面渲染事件;其中,所述回調函數用於在有用戶介面渲染事件進入所述事件佇列時通知所述第一執行緒。
- 如申請專利範圍第10或11項所述的裝置,其中,所述動態語言應用運行平臺包括Node.js,所述第二語言包括JavaScript語言。
- 一種電腦可讀媒體,所述可讀媒體上儲存有指令,所述指令被一個或多個處理器執行時,使得通訊設備執行如申請專利範圍第1至9項中任一項所述的方法。
- 一種通訊設備,包括: 一個或多個處理器;以及 一個或多個電腦可讀媒體,所述可讀媒體上儲存有指令,所述指令被所述一個或多個處理器執行時,使得所述裝置執行如申請專利範圍第1至9項中任一項所述的方法。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710135534.9A CN108572818B (zh) | 2017-03-08 | 2017-03-08 | 一种用户界面渲染方法及装置 |
CN201710135534.9 | 2017-03-08 |
Publications (1)
Publication Number | Publication Date |
---|---|
TW201833792A true TW201833792A (zh) | 2018-09-16 |
Family
ID=63448871
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW106137747A TW201833792A (zh) | 2017-03-08 | 2017-11-01 | 用戶介面渲染方法及裝置 |
Country Status (4)
Country | Link |
---|---|
US (1) | US20200057660A1 (zh) |
CN (1) | CN108572818B (zh) |
TW (1) | TW201833792A (zh) |
WO (1) | WO2018161812A1 (zh) |
Families Citing this family (21)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108595228B (zh) | 2018-05-10 | 2021-03-12 | Oppo广东移动通信有限公司 | 应用程序预测模型建立方法、装置、存储介质及移动终端 |
CN108614722B (zh) | 2018-05-10 | 2020-09-08 | 上海瑾盛通信科技有限公司 | 应用程序预加载方法、装置、存储介质及终端 |
CN108595227A (zh) | 2018-05-10 | 2018-09-28 | Oppo广东移动通信有限公司 | 应用程序预加载方法、装置、存储介质及移动终端 |
CN108710513B (zh) | 2018-05-15 | 2020-07-21 | Oppo广东移动通信有限公司 | 应用程序启动方法、装置、存储介质及终端 |
CN108762843B (zh) * | 2018-05-29 | 2020-05-05 | Oppo广东移动通信有限公司 | 应用程序的预加载方法、装置、存储介质及智能终端 |
CN108804157A (zh) | 2018-06-05 | 2018-11-13 | Oppo广东移动通信有限公司 | 应用程序预加载方法、装置、存储介质及终端 |
CN109697060B (zh) * | 2018-12-29 | 2022-08-26 | 广州方硅信息技术有限公司 | 视频特效系统及其生成方法、装置、设备和存储介质 |
CN111414150B (zh) * | 2019-01-04 | 2022-10-11 | 厦门雅基软件有限公司 | 游戏引擎渲染方法、装置、电子设备及计算机存储介质 |
CN109739505B (zh) | 2019-01-08 | 2019-11-29 | 网易(杭州)网络有限公司 | 一种用户界面的处理方法和装置 |
CN110471709B (zh) * | 2019-07-15 | 2022-12-06 | 北京字节跳动网络技术有限公司 | 一种加速网页打开速度的方法、装置、介质和电子设备 |
CN111158818B (zh) * | 2019-12-24 | 2023-12-01 | 中国建设银行股份有限公司 | 一种页面渲染方法和装置 |
CN111381920B (zh) * | 2020-02-17 | 2022-10-04 | 网易(杭州)网络有限公司 | 弹窗组件的显示方法、装置以及电子终端 |
CN111414296B (zh) * | 2020-03-25 | 2023-04-07 | 北京字节跳动网络技术有限公司 | 信号监听方法、装置、计算机设备和存储介质 |
CN111581555B (zh) * | 2020-04-27 | 2023-09-15 | 北京字节跳动网络技术有限公司 | 一种文档加载方法、装置、设备及存储介质 |
CN111740948B (zh) * | 2020-05-12 | 2023-04-07 | 北京沃东天骏信息技术有限公司 | 数据包发布方法、动态更新方法、装置、设备及介质 |
CN111857658A (zh) * | 2020-06-19 | 2020-10-30 | 北京字节跳动网络技术有限公司 | 一种渲染动态组件的方法、装置、介质和电子设备 |
CN112256421A (zh) * | 2020-11-12 | 2021-01-22 | Oppo广东移动通信有限公司 | 通信处理方法、装置、存储介质及电子设备 |
CN114356324A (zh) * | 2021-12-16 | 2022-04-15 | 阿里巴巴(中国)有限公司 | 界面处理方法、装置、设备和存储介质 |
CN114327446B (zh) * | 2022-03-14 | 2022-06-07 | 恒生电子股份有限公司 | 一种小程序转换应用程序的处理方法及装置 |
CN114821002A (zh) * | 2022-04-12 | 2022-07-29 | 支付宝(杭州)信息技术有限公司 | 基于ar的互动方法、装置及电子设备 |
CN114924837A (zh) * | 2022-05-18 | 2022-08-19 | 京东方科技集团股份有限公司 | 数据处理方法、电子设备和可读存储介质 |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9286142B2 (en) * | 2011-04-07 | 2016-03-15 | Adobe Systems Incorporated | Methods and systems for supporting a rendering API using a runtime environment |
US9384012B2 (en) * | 2011-12-16 | 2016-07-05 | Sap Se | Standalone data entry for backend system |
CN103713891B (zh) * | 2012-10-09 | 2017-11-24 | 阿里巴巴集团控股有限公司 | 一种在移动设备上进行图形渲染的方法和装置 |
EP3044967A4 (en) * | 2013-09-10 | 2017-05-10 | Calgary Scientific Inc. | Architecture for distributed server-side and client-side image data rendering |
US20150149888A1 (en) * | 2013-11-27 | 2015-05-28 | Moboom Ltd. | Systems and methods for executing aspects of a document |
CN103970966B (zh) * | 2014-05-27 | 2018-01-16 | 武汉兆图科技有限公司 | 一种跨嵌入式平台的三维渲染引擎的构建方法 |
CN105354014B (zh) * | 2014-08-18 | 2018-10-23 | 阿里巴巴集团控股有限公司 | 应用界面渲染展示方法及装置 |
CN105867911B (zh) * | 2016-03-24 | 2019-04-02 | 江苏大学 | 一种Iris 2D图形引擎的实现方法 |
-
2017
- 2017-03-08 CN CN201710135534.9A patent/CN108572818B/zh active Active
- 2017-11-01 TW TW106137747A patent/TW201833792A/zh unknown
-
2018
- 2018-02-26 WO PCT/CN2018/077186 patent/WO2018161812A1/zh active Application Filing
-
2019
- 2019-09-03 US US16/559,047 patent/US20200057660A1/en not_active Abandoned
Also Published As
Publication number | Publication date |
---|---|
CN108572818A (zh) | 2018-09-25 |
CN108572818B (zh) | 2021-07-23 |
WO2018161812A1 (zh) | 2018-09-13 |
US20200057660A1 (en) | 2020-02-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TW201833792A (zh) | 用戶介面渲染方法及裝置 | |
TW201833768A (zh) | 資源載入方法及裝置 | |
US10324734B2 (en) | Application containers | |
US11868785B2 (en) | Application program page processing method and device | |
US10445083B2 (en) | Application containers with dynamic sub-package loading | |
WO2016192556A1 (zh) | 接口调用方法、装置及终端 | |
WO2022199111A1 (zh) | 应用程序中功能的实现方法、装置、电子设备和存储介质 | |
US11860796B2 (en) | Execution space agnostic device drivers | |
CN111095205A (zh) | 用于片上系统的预启动环境的多核框架 | |
KR20160130491A (ko) | 애플리케이션간 호출 중의 애플리케이션 디하이드레이션 및 리하이드레이션 | |
US10599444B2 (en) | Extensible input stack for processing input device data | |
US20190213015A1 (en) | Extensible input stack for processing input device data | |
CN112988604B (zh) | 对象测试方法、测试系统、电子设备及可读存储介质 | |
CN116450473A (zh) | 踩内存问题的定位方法和电子设备 | |
CN114138507B (zh) | Python程序服务化方法、装置及计算机可读存储介质 | |
WO2020133455A1 (zh) | 应用程序的管理方法、装置、存储介质及电子设备 | |
CN116450228A (zh) | 用于运行应用程序的方法和电子设备 | |
CN117591163A (zh) | 内核升级方法、装置、介质、芯片和电子设备 | |
CN117667309A (zh) | 一种快照镜像的加载方法、装置、存储介质及电子设备 |