了解更多开源请访问:开源基础软件社区https://ost.51cto.comAbilityFrameworkOverview能力是对应用能力的抽象,也是应用的基本单元。OpenHarmony和HarmonyOS的应用APP由一个或多个Hap包组成,每个Hap可以包含一个或多个Abilities。Ability框架模型有FA模型和Stage模型两种形式:FA模型:OpenHarmonyAPI8及更早版本的应用只能使用FA模型开发。FA模型将Ability分为两种:FA(FeatureAbility)和PA(ParticleAbility)。FA支持PageAbility,PA支持ServiceAbility、DataAbility、FormAbility。Stage模型:从OpenHarmonyAPI9开始,Ability框架引入Stage模型作为第二种应用框架形式。Stage模型将Ability分为两类:PageAbility和ExtensionAbility。ExtensionAbility扩展为一系列ServiceExtensionAbility、FormExtensionAbility、DataShareExtensionAbility。ExtensionAbility满足更多的使用场景。Stage模型相对较新,它旨在让开发人员更轻松地在分布式环境中开发复杂的应用程序。下表是官方给出的两款机型的设计差异:从表中可以看出,从界面、UI开发的角度来看,两者并没有太大的区别。FA模型的设计特点是每个Ability都是一个小单元,每个小单元之间都有空隙,可以让开发者专注于定制每个Ability的具体能力,这样在简单的场景下,应用的Ability的结构会越来越清晰。FA模型和Stage模型的区别流程差异单独看每个流程可以发现,在FA中,一个Ability只能绑定一个JSVM(JavaScriptVirtualMachine)引擎,每个流程中的JSVM引擎Stage模型中可以被多个能力共享,而JSVM(JavaScriptVirtualMachine)引擎的作用可以简单理解为读取应用程序中的JavaScript代码,然后进行相应的处理,起到解释器的作用,让底层能够看懂开发者写的代码,从而有更多的可能去打破Stage模型同一个进程中不同Abilities之间的差距。当涉及到同一个进程中多个Abilities的直接交互开发时,性能会更高,同时它支持一个很重要的特性,它的独特之处在于一个进程内可以共享对象,这意味着开发者无需考虑线程间的对象共享,只需要关注分布式交互场景。生命周期的差异生命周期的差异主要是圈出的区域,也就是Ability从后台切换到前台的过程。FA模型这部分比较简单,只有4个回调函数,看图就明白了。在Stage模型中,设计者将Ability组件与窗口弱耦合,引入了WindowStage(本地窗口管理器)的概念。background),使得中间层Ability只需要感知前景和背景的变化,不需要感知focus的变化,实现了Ability组件与窗口的解耦。解耦的目的是为了支持多种设备窗体,更容易实现多种不同的窗体,方便裁剪,更有利于自定义不同的窗体。组件差异从组件的角度来看,FA模型的Ability组件类型相对固定,而Stage模型的Ability组件类型是可扩展的。了解更多开源知识,请访问:开源基础软件社区https://ost.51cto.com。
