應(yīng)用模型解讀

2024-01-25 12:12 更新

HarmonyOS應(yīng)用模型概況

隨著系統(tǒng)的演進(jìn)發(fā)展,HarmonyOS先后提供了兩種應(yīng)用模型:

  • FA(Feature Ability)模型:HarmonyOS早期版本開(kāi)始支持的模型,已經(jīng)不再主推。

  • Stage模型:HarmonyOS 3.1 Developer Preview版本開(kāi)始新增的模型,是目前主推且會(huì)長(zhǎng)期演進(jìn)的模型。在該模型中,由于提供了AbilityStage、WindowStage等類(lèi)作為應(yīng)用組件和Window窗口的“舞臺(tái)”,因此稱(chēng)這種應(yīng)用模型為Stage模型。

Stage模型之所以成為主推模型,源于其設(shè)計(jì)思想。Stage模型的設(shè)計(jì)基于如下出發(fā)點(diǎn)。

  1. 為復(fù)雜應(yīng)用而設(shè)計(jì)

    • 多個(gè)應(yīng)用組件共享同一個(gè)ArkTS引擎(運(yùn)行ArkTS語(yǔ)言的虛擬機(jī))實(shí)例,應(yīng)用組件之間可以方便的共享對(duì)象和狀態(tài),同時(shí)減少?gòu)?fù)雜應(yīng)用運(yùn)行對(duì)內(nèi)存的占用。
    • 采用面向?qū)ο蟮拈_(kāi)發(fā)方式,使得復(fù)雜應(yīng)用代碼可讀性高、易維護(hù)性好、可擴(kuò)展性強(qiáng)。
  2. 支持多設(shè)備和多窗口形態(tài)

    應(yīng)用組件管理和窗口管理在架構(gòu)層面解耦:

    • 便于系統(tǒng)對(duì)應(yīng)用組件進(jìn)行裁剪(無(wú)屏設(shè)備可裁剪窗口)。

    • 便于系統(tǒng)擴(kuò)展窗口形態(tài)。

    • 在多設(shè)備(如桌面設(shè)備和移動(dòng)設(shè)備)上,應(yīng)用組件可使用同一套生命周期。

  3. 平衡應(yīng)用能力和系統(tǒng)管控成本

    Stage模型重新定義應(yīng)用能力的邊界,平衡應(yīng)用能力和系統(tǒng)管控成本。

    • 提供特定場(chǎng)景(如卡片、輸入法)的應(yīng)用組件,以便滿(mǎn)足更多的使用場(chǎng)景。
    • 規(guī)范化后臺(tái)進(jìn)程管理:為保障用戶(hù)體驗(yàn),Stage模型對(duì)后臺(tái)應(yīng)用進(jìn)程進(jìn)行了有序治理,應(yīng)用程序不能隨意駐留在后臺(tái),同時(shí)應(yīng)用后臺(tái)行為受到嚴(yán)格管理,防止惡意應(yīng)用行為。

通過(guò)對(duì)比認(rèn)識(shí)FA模型與Stage模型

Stage模型與FA模型最大的區(qū)別在于:Stage模型中,多個(gè)應(yīng)用組件共享同一個(gè)ArkTS引擎實(shí)例;而FA模型中,每個(gè)應(yīng)用組件獨(dú)享一個(gè)ArkTS引擎實(shí)例。因此在Stage模型中,應(yīng)用組件之間可以方便的共享對(duì)象和狀態(tài),同時(shí)減少?gòu)?fù)雜應(yīng)用運(yùn)行對(duì)內(nèi)存的占用。Stage模型作為主推的應(yīng)用模型,開(kāi)發(fā)者通過(guò)它能夠更加便利地開(kāi)發(fā)出分布式場(chǎng)景下的復(fù)雜應(yīng)用。

可通過(guò)如下對(duì)比表格了解兩種模型的整體概況。

表1 FA模型與Stage模型差異概覽

項(xiàng)目

FA模型

Stage模型

應(yīng)用組件

1. 組件分類(lèi)

 - PageAbility組件:包含UI界面,提供展示UI的能力。詳細(xì)介紹請(qǐng)參見(jiàn)PageAbility組件概述。

- ServiceAbility組件:提供后臺(tái)服務(wù)的能力,無(wú)UI界面。詳細(xì)介紹請(qǐng)參見(jiàn)ServiceAbility組件概述。

- DataAbility組件:提供數(shù)據(jù)分享的能力,無(wú)UI界面。詳細(xì)介紹請(qǐng)參見(jiàn)DataAbility組件概述

2. 開(kāi)發(fā)方式

通過(guò)導(dǎo)出匿名對(duì)象、固定入口文件的方式指定應(yīng)用組件。開(kāi)發(fā)者無(wú)法進(jìn)行派生,不利于擴(kuò)展能力。

1. 組件分類(lèi)

 - UIAbility組件:包含UI界面,提供展示UI的能力,主要用于和用戶(hù)交互。詳細(xì)介紹請(qǐng)參見(jiàn)UIAbility組件概述

- ExtensionAbility組件:提供特定場(chǎng)景(如卡片、輸入法)的擴(kuò)展能力,滿(mǎn)足更多的使用場(chǎng)景。詳細(xì)介紹請(qǐng)參見(jiàn)ExtensionAbility組件。

2. 開(kāi)發(fā)方式

采用面向?qū)ο蟮姆绞?,將?yīng)用組件以類(lèi)接口的形式開(kāi)放給開(kāi)發(fā)者,可以進(jìn)行派生,利于擴(kuò)展能力。

進(jìn)程模型

有兩類(lèi)進(jìn)程:

1. 主進(jìn)程

2. 渲染進(jìn)程

詳細(xì)介紹請(qǐng)參見(jiàn)進(jìn)程模型

有三類(lèi)進(jìn)程:

1. 主進(jìn)程

2. ExtensionAbility進(jìn)程

3. 渲染進(jìn)程

詳細(xì)介紹請(qǐng)參見(jiàn)進(jìn)程模型。

線(xiàn)程模型

1. ArkTS引擎實(shí)例的創(chuàng)建

一個(gè)進(jìn)程可以運(yùn)行多個(gè)應(yīng)用組件實(shí)例,每個(gè)應(yīng)用組件實(shí)例運(yùn)行在一個(gè)單獨(dú)的ArkTS引擎實(shí)例中。

2. 線(xiàn)程模型

每個(gè)ArkTS引擎實(shí)例都在一個(gè)單獨(dú)線(xiàn)程(非主線(xiàn)程)上創(chuàng)建,主線(xiàn)程沒(méi)有ArkTS引擎實(shí)例。

3. 進(jìn)程內(nèi)對(duì)象共享:不支持。

詳細(xì)介紹請(qǐng)參見(jiàn)線(xiàn)程模型

1. ArkTS引擎實(shí)例的創(chuàng)建

一個(gè)進(jìn)程可以運(yùn)行多個(gè)應(yīng)用組件實(shí)例,所有應(yīng)用組件實(shí)例共享一個(gè)ArkTS引擎實(shí)例。

2. 線(xiàn)程模型

ArkTS引擎實(shí)例在主線(xiàn)程上創(chuàng)建。

3. 進(jìn)程內(nèi)對(duì)象共享:支持。

詳細(xì)介紹請(qǐng)參見(jiàn)線(xiàn)程模型。

應(yīng)用配置文件

使用config.json描述應(yīng)用信息、HAP信息和應(yīng)用組件信息。

詳細(xì)介紹請(qǐng)參見(jiàn)應(yīng)用配置文件概述(FA模型)。

使用app.json5描述應(yīng)用信息,module.json5描述HAP信息、應(yīng)用組件信息。

詳細(xì)介紹請(qǐng)參見(jiàn)應(yīng)用配置文件概述(Stage模型)。

以上內(nèi)容是否對(duì)您有幫助:
在線(xiàn)筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)