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