天天看點

#打卡不停更#【FFH】淺析Ability架構中Stage模型與FA模型的差異Aility架構概述FA模型與Stage模型差異對比

(#打卡不停更#【FFH】淺析Ability架構中Stage模型與FA模型的差異)

Aility架構概述

Ability是應用所具備能力的抽象,也是應用程式的基本組成單元。OpenHarmony與HarmonyOS的應用程式APP由一個或多個Hap包組成,每個Hap可以包含一個或多個Ability。

Ability架構模型具有兩種形态,

FA模型

以及

Stage模型

  • FA模型:

    OpenHarmony API 8及其更早版本的應用程式隻能使用FA模型進行開發。FA模型将Ability分為FA(Feature Ability)和PA(Particle Ability)兩種類型,其中FA支援Page Ability,PA支援Service Ability、Data Ability、以及FormAbility。
#打卡不停更#【FFH】淺析Ability架構中Stage模型與FA模型的差異Aility架構概述FA模型與Stage模型差異對比
  • Stage模型:

    從OpenHarmony API 9開始,Ability架構引入了Stage模型作為第二種應用架構形态,Stage模型将Ability分為PageAbility和ExtensionAbility兩大類,其中ExtensionAbility又被擴充為ServiceExtensionAbility、FormExtensionAbility、DataShareExtensionAbility等一系列ExtensionAbility,以便滿足更多的使用場景。
#打卡不停更#【FFH】淺析Ability架構中Stage模型與FA模型的差異Aility架構概述FA模型與Stage模型差異對比

Stage模型比較新,其被設計出來就是為了讓開發者能更加友善地開發出分布式環境的複雜應用,下表是官方給出的兩種模型的設計差異:

#打卡不停更#【FFH】淺析Ability架構中Stage模型與FA模型的差異Aility架構概述FA模型與Stage模型差異對比

​ 從表中可以看到,從界面UI開發上來看,兩者的差別不大。

​ FA模型的設計特點就是每個Ability都是小單元,每個小單元之間都是存在隔閡的,這樣可以讓開發者專注于定制每個Ability的特定能力,這樣在簡單場景下,應用的Ability結構會比較清晰明确。

FA模型與Stage模型差異對比

程序差異

​ 單看每個程序,可以發現在FA中一個Ability隻允許綁定一個JS VM(JavaScript虛拟機)引擎,Stage模型中每個程序内的JS VM引擎可以被多個Ability共享,而JS VM(JavaScript虛拟機)引擎的作用可以簡單了解為讀取應用中的JavaScript代碼,然後進行相應處理,起到一個解釋器的作用,讓底層可以讀懂開發人員寫的代碼,是以Stage模型同一個程序内的不同Ability之間是存在更多打破隔閡的可能性,涉及到同一個程序内多個Ability直接的互動開發時,性能也會更高,同時支援了一個非常重要的特性,就是程序内可以共享對象,這意味着開發者不需要考慮線程之間的對象共享,隻需要聚焦在分布式的互動場景上。

#打卡不停更#【FFH】淺析Ability架構中Stage模型與FA模型的差異Aility架構概述FA模型與Stage模型差異對比

生命周期間差異

#打卡不停更#【FFH】淺析Ability架構中Stage模型與FA模型的差異Aility架構概述FA模型與Stage模型差異對比

生命周期的差異主要是圈起來的地方,也是就Ability從背景和前台之前切換的過程,FA模型中該部分比較簡單,隻有4個回調函數,大家看圖也可以了解。

#打卡不停更#【FFH】淺析Ability架構中Stage模型與FA模型的差異Aility架構概述FA模型與Stage模型差異對比

而在Stage模型中,設計者将Ability元件與視窗之間進行了弱耦合,引入了

WindowStage(本地視窗管理器)

的概念,WindowStage主要用于處理界面獲焦狀态(前台),以及失焦狀态(背景),這樣中間層Ability隻需要感覺前背景變化,而不需感覺焦點變化,進而實作Ability元件和視窗之間的解耦。

解耦的目的就是為了支援多種裝置形态和更易于實作多種不同的視窗形态,進而友善裁剪,更有利于定制不同的視窗形态

元件間差異

​ 從元件上來看,FA模型的Ability元件類型比較固定,而Stage模型的Ability元件類型具備拓展性。

本文作者:Hagon

繼續閱讀