應用模型
應用模型的構成要素
應用模型是系統(tǒng)為開發(fā)者提供的應用程序所需能力的抽象提煉,它提供了應用程序必備的組件和運行機制。有了應用模型,開發(fā)者可以基于一套統(tǒng)一的模型進行應用開發(fā),使應用開發(fā)更簡單、高效。
應用模型的構成要素包括:
- 應用組件
應用組件是應用的基本組成單位,是應用的運行入口。用戶啟動、使用和退出應用過程中,應用組件會在不同的狀態(tài)間切換,這些狀態(tài)稱為應用組件的生命周期。應用組件提供生命周期的回調(diào)函數(shù),開發(fā)者通過應用組件的生命周期回調(diào)感知應用的[狀態(tài)變化]。應用開發(fā)者在編寫應用時,首先需要編寫的就是應用組件,同時還需編寫應用組件的生命周期回調(diào)函數(shù),并在應用配置文件中配置相關信息。這樣,操作系統(tǒng)在運行期間通過配置文件創(chuàng)建應用組件的實例,并調(diào)度它的生命周期回調(diào)函數(shù),從而執(zhí)行開發(fā)者的代碼。 - 應用進程模型
應用進程模型定義應用進程的創(chuàng)建和銷毀方式,以及進程間的通信方式。 - 應用線程模型
應用線程模型定義應用進程內(nèi)線程的創(chuàng)建和銷毀方式、主線程和UI線程的創(chuàng)建方式、線程間的通信方式。 - 應用任務管理模型(僅對系統(tǒng)應用開放)
應用任務管理模型定義任務(Mission)的創(chuàng)建和銷毀方式,以及任務與組件間的關系。所謂任務,即用戶使用一個應用組件實例的記錄。每次用戶啟動一個新的應用組件實例,都會生成一個新的任務。例如,用戶啟動一個視頻應用,此時在“最近任務”界面,將會看到視頻應用這個任務,當用戶點擊這個任務時,系統(tǒng)會把該任務切換到前臺,如果這個視頻應用中的視頻編輯功能也是通過應用組件編寫的,那么在用戶啟動視頻編輯功能時,會創(chuàng)建視頻編輯的應用組件實例,在“最近任務”界面中,將會展示視頻應用、視頻編輯兩個任務。 - 應用配置文件
應用配置文件中包含應用配置信息、應用組件信息、權限信息、開發(fā)者自定義信息等,這些信息在編譯構建、分發(fā)和運行階段分別提供給編譯工具、應用市場和操作系統(tǒng)使用。
應用模型概況
隨著系統(tǒng)的演進發(fā)展,先后提供了兩種應用模型:
- FA(Feature Ability)模型:從API 7開始支持的模型,已經(jīng)不再主推。
- Stage模型:從API 9開始新增的模型,是目前主推且會長期演進的模型。在該模型中,由于提供了AbilityStage、WindowStage等類作為應用組件和Window窗口的“舞臺”,因此稱這種應用模型為Stage模型。
- 開發(fā)前請熟悉鴻蒙開發(fā)指導文檔 :[
gitee.com/li-shizhen-skin/harmony-os/blob/master/README.md
]
通過對比認識FA模型與Stage模型
Stage模型與FA模型最大的區(qū)別在于 :Stage模型中,多個應用組件共享同一個ArkTS引擎實例;而FA模型中,每個應用組件獨享一個ArkTS引擎實例。因此在Stage模型中,應用組件之間可以方便的共享對象和狀態(tài),同時減少復雜應用運行對內(nèi)存的占用。Stage模型作為主推的應用模型,開發(fā)者通過它能夠更加便利地開發(fā)出分布式場景下的復雜應用。
可通過如下對比表格了解兩種模型的整體概況。
表1 FA模型與Stage模型差異概覽
項目HarmonyOS與OpenHarmony鴻蒙文檔籽料:mau123789是v直接拿 | FA模型 | Stage模型 |
---|---|---|
應用組件 | 1. 組件分類- PageAbility組件:包含UI,提供展示UI的能力。 - ServiceAbility組件:提供后臺服務的能力,無UI。 - DataAbility組件:提供數(shù)據(jù)分享的能力,無UI。 2. 開發(fā)方式 通過導出匿名對象、固定入口文件的方式指定應用組件。開發(fā)者無法進行派生,不利于擴展能力。 | 1. 組件分類- UIAbility組件:包含UI,提供展示UI的能力,主要用于和用戶交互。 - ExtensionAbility組件:提供特定場景(如卡片、輸入法)的擴展能力,滿足更多的使用場景。 2. 開發(fā)方式 采用面向?qū)ο蟮姆绞剑瑢媒M件以類接口的形式開放給開發(fā)者,可以進行派生,利于擴展能力。 |
進程模型 | 有兩類進程: 1. 主進程 2. 渲染進程 | 有三類進程: 1. 主進程 2. ExtensionAbility進程 3. 渲染進程 |
線程模型 | 1. ArkTS引擎實例的創(chuàng)建 一個進程可以運行多個應用組件實例,每個應用組件實例運行在一個單獨的ArkTS引擎實例中。 2. 線程模型 每個ArkTS引擎實例都在一個單獨線程(非主線程)上創(chuàng)建,主線程沒有ArkTS引擎實例。 3. 進程內(nèi)對象共享:不支持。 | 1. ArkTS引擎實例的創(chuàng)建 一個進程可以運行多個應用組件實例,所有應用組件實例共享一個ArkTS引擎實例。 2. 線程模型 ArkTS引擎實例在主線程上創(chuàng)建。 3. 進程內(nèi)對象共享:支持。 |
任務管理模型 | - 每個PageAbility組件實例創(chuàng)建一個任務。 - 任務會持久化存儲,直到超過最大任務個數(shù)(根據(jù)產(chǎn)品配置自定義)或者用戶主動刪除任務。 - PageAbility組件之間不會形成棧的結構。 | - 每個UIAbility組件實例創(chuàng)建一個任務。 - 任務會持久化存儲,直到超過最大任務個數(shù)(根據(jù)產(chǎn)品配置自定義)或者用戶主動刪除任務。 - UIAbility組件之間不會形成棧的結構。 |
應用配置文件 | 使用config.json描述應用信息、HAP信息和應用組件信息。 | 使用app.json5描述應用信息,module.json5描述HAP信息、應用組件信息。 |
審核編輯 黃宇 |
-
模型
+關注
關注
1文章
3255瀏覽量
48907 -
鴻蒙
+關注
關注
57文章
2368瀏覽量
42897
發(fā)布評論請先 登錄
相關推薦
評論