Stage模型:HarmonyOS 3.1 Develper Preview版本開始新增的模型,是目前主推且會長期演進(jìn)的模型。在該模型中,由于提供了AbilityStage、WindowStage等類作為應(yīng)用組件和Window窗口的“舞臺”,因此稱這種應(yīng)用模型為Stage模型。
設(shè)計(jì)思想
Stage模型之所以成為主推模型,源于其設(shè)計(jì)思想。Stage模型的設(shè)計(jì)基于如下出發(fā)點(diǎn)。
為復(fù)雜應(yīng)用而設(shè)計(jì)
多個應(yīng)用組件共享同一個ArkTS引擎(運(yùn)行ArkTS語言的虛擬機(jī))實(shí)例,應(yīng)用組件之間可以方便的共享對象和狀態(tài),同時減少復(fù)雜應(yīng)用運(yùn)行對內(nèi)存的占用。
采用面向?qū)ο蟮拈_發(fā)方式,使得復(fù)雜應(yīng)用代碼可讀性高、易維護(hù)性好、可擴(kuò)展性強(qiáng)。
支持多設(shè)備和多窗口形態(tài)
應(yīng)用組件管理和窗口管理在架構(gòu)層面解耦:
便于系統(tǒng)對應(yīng)用組件進(jìn)行裁剪(無屏設(shè)備可裁剪窗口)。 便于系統(tǒng)擴(kuò)展窗口形態(tài)。
在多設(shè)備(如桌面設(shè)備和移動設(shè)備)上,應(yīng)用組件可使用同一套生命周期。
平衡應(yīng)用能力和系統(tǒng)管控成本
Stage模型重新定義應(yīng)用能力的邊界,平衡應(yīng)用能力和系統(tǒng)管控成本。
提供特定場景(如卡片、輸入法)的應(yīng)用組件,以便滿足更多的使用場景。
規(guī)范化后臺進(jìn)程管理:為保障用戶體驗(yàn),Stage模型對后臺應(yīng)用進(jìn)程進(jìn)行了有序治理,應(yīng)用程序不能隨意駐留在后臺,同時應(yīng)用后臺行為受到嚴(yán)格管理,防止惡意應(yīng)用行為。
概述
UIAbility組件和ExtensionAbility組件
Stage模型提供UIAbility和ExtensionAbility兩種類型的組件,這兩種組件都有具體的類承載,支持面向?qū)ο蟮拈_發(fā)方式。
UIAbility組件是一種包含UI界面的應(yīng)用組件,主要用于和用戶交互。例如,圖庫類應(yīng)用可以在UIAbility組件中展示圖片瀑布流,在用戶選擇某個圖片后,在新的頁面中展示圖片的詳細(xì)內(nèi)容。同時用戶可以通過返回鍵返回到瀑布流頁面。UIAbility的生命周期只包含創(chuàng)建/銷毀/前臺/后臺等狀態(tài),與顯示相關(guān)的狀態(tài)通過WindowStage的事件暴露給開發(fā)者。
ExtensionAbility組件是一種面向特定場景的應(yīng)用組件。
WindowStage
每個UIAbility類實(shí)例都會與一個WindowStage類實(shí)例綁定,該類提供了應(yīng)用進(jìn)程內(nèi)窗口管理器的作用。它包含一個主窗口。也就是說UIAbility通過WindowStage持有了一個窗口,該窗口為ArkUI提供了繪制區(qū)域。
Context
在Stage模型上,Context及其派生類向開發(fā)者提供在運(yùn)行期可以調(diào)用的各種能力。UIAbility組件和各種ExtensionAbility派生類都有各自不同的Context類,他們都繼承自基類Context,但是各自又根據(jù)所屬組件,提供不同的能力。
AbilityStage
每個Entry類型或者Feature類型的HAP在運(yùn)行期都有一個AbilityStage類實(shí)例,當(dāng)HAP中的代碼首次被加載到進(jìn)程中的時候,系統(tǒng)會先創(chuàng)建AbilityStage實(shí)例。每個在該HAP中定義的UIAbility類,在實(shí)例化后都會與該實(shí)例產(chǎn)生關(guān)聯(lián)。開發(fā)者可以使用AbilityStage獲取該HAP中UIAbility實(shí)例的運(yùn)行時信息。
應(yīng)用與組件配置
在基于Stage模型開發(fā)的應(yīng)用項(xiàng)目代碼下,都存在一個 app.json5 及一個或多個 module.json5 這兩種配置文件。
app.json5主要包含以下內(nèi)容:
應(yīng)用的全局配置信息,包含應(yīng)用的包名、開發(fā)廠商、版本號等基本信息。
特定設(shè)備類型的配置信息。
module.json5主要包含以下內(nèi)容:
Module的基本配置信息,例如Module名稱、類型、描述、支持的設(shè)備類型等基本信息。
應(yīng)用組件信息,包含UIAbility組件和ExtensionAbility組件的描述信息。
應(yīng)用運(yùn)行過程中所需的權(quán)限信息。
審核編輯 黃宇
-
模型
+關(guān)注
關(guān)注
1文章
3517瀏覽量
50383 -
鴻蒙
+關(guān)注
關(guān)注
60文章
2617瀏覽量
44021 -
HarmonyOS
+關(guān)注
關(guān)注
80文章
2126瀏覽量
32946
發(fā)布評論請先 登錄
Stage 模型深入解讀

FA模型訪問Stage模型DataShareExtensionAbility說明
如何將一個FA模型開發(fā)的聲明式范式應(yīng)用切換到Stage模型
從FA模型切換到Stage模型時:module的切換說明
鴻蒙Stage模型和FA模型區(qū)別
Stage模型深入解讀
鴻蒙開發(fā)Ability Kit程序框架服務(wù):FA模型與Stage模型應(yīng)用組件互通綜述

鴻蒙開發(fā)Ability Kit程序框架服務(wù):FA模型綁定Stage模型ServiceExtensionAbility

鴻蒙開發(fā)Ability Kit程序框架服務(wù):Stage模型啟動FA模型PageAbility

鴻蒙開發(fā)Ability Kit程序框架服務(wù):Stage模型綁定FA模型ServiceAbility

評論