了解更多开源请访问:开源基础软件社区https://ost.51cto.com1.前言在HarmonyOS/OpenHarmony应用中EverythingisAbility(能力),即每一个界面都可以是Ability,每一个功能都可以是Ability,而Ability分为两种:FA(FeatureAbility)和PA(ParticleAbility).其中,FA唯一支持的模板PageAbility用于提供与用户交互的能力。设备主界面有可见的桌面图标,可以通过图标启动应用程序进行交互操作;PA分为服务能力和数据能力。前者用于提供在后台运行任务的能力,后者用于应用程序管理对自身和其他应用程序存储的数据的访问。所以PA没有界面,用户不能直接操作,可以和FA配合使用。在JS/eTS语言中,Ability框架进一步分为FA模型和Stage模型(该模型目前只支持OpenHarmonyAPI9)。在DevEcoStudio3.0Beta4中,HarmonyOS使用的是OpenHarmonyAPI8,所以大家可以大胆猜测后续的API版本是否会基于OpenHarmonyAPI版本。本节重点介绍API8,后续章节会详细介绍Stage模型。这里的FA是一个模型,这里的Ability分为PageAbility、ServiceAbility、DataAbility、FormAbility、FA(FeatureAbility不要混淆)。PageAbility是一个用户可见的可交互的Ability实例,可用于开发在设备主界面上带有入口图标的应用程序。ServiceAbility在后台运行,无界面,用户无法直接操作,可通过PageAbility调用。DataAbility为其他Abilities提供数据访问支持,同样是后台运行,没有界面。FormAbility是卡片式Ability,一种新型的Ability,用于呈现特定信息的入口界面。JS/eTS语言是方舟UI提供给开发者开发应用的两种开发范式。前者是基于JS扩展的类Web开发范式。如果开发者有小程序开发经验,可以直接上手。面向Web前端开发人员;而后者是基于TS扩展的声明式开发范式,类似于Flutter开发应用,更倾向于移动系统应用和系统应用开发者。2.开发准备工具:DevEcoStudio3.0Beta4。操作设备:P50(HarmonyOS3.0)/DAYU200(OpenHarmony3.0Beta2)。桌面工具:Scrcpy(用于在PC桌面分享P50界面,OpenHarmony目前还没有)。使用DevEcoStudio创建HarmonyOS应用,开发语言为eTS语言,编译版本为8,项目名称为FaeTSSample(由于DevEcoStudio3.0Beta4的特性,HarmonyOS和OpenHarmony可以互通,目前的HarmonyOS应用可以直接在OpenHarmony操作系统设备上运行)。3、带接口的PageAbility通过DevEcoStudio创建一个Application(应用程序),默认会创建一个PageAbility模板代码。在ArkUI框架中,PageAbility相关的能力是通过一个单独的featureAbility模块实现的,为用户提供交互界面。因此,生命周期比其他能力复杂。PageAbility生命周期回调是通过app.js/app.ets中的函数实现的。目前app.js只支持onCreate和onDestroy回调,而app.ets支持全生命周期回调。本节以eTS语言为主,主要介绍eTS语言开发中的PageAbility生命周期回调,如下图所示:可以在app.ets中重写所有生命周期函数,运行应用查看生命周期回调信息,代码如下:'FaeTSSampleApplicationonInactive')},onHide(){console.info('FaeTSSampleApplicationonHide')},onShow(){console.info('FaeTSSampleApplicationonShow')},onDestroy(){console.info('FaeTSSampleApplicationonDestroy')},}(1)使用featureAbility模块启动本地PageAbilityHarmonyOS/OpenHarmony为用户提供路由跳转方式,路由跳转方式为页面间跳转。featureAbility模块可以用来在Abilities之间跳转,featureAbility只能在PageAbility类型的Ability中调用。使用featureAbility模块需要在具体的业务逻辑接口使用如下代码导入该模块:importfeatureAbilityfrom'@ohos.ability.featureAbility';featureAbility模块提供了启动一个新的Ability、获取dataAbilityHelper、设置这个PageAbility、获取当前Ability对应的window、connectionservice等能力的多种方法。featureAbility提供的启动一个新的Ability的能力如下表所示:名称描述startAbility启动一个新的AbilitystartAbilityForResult启动一个新的Ability,并在Ability被销毁时返回执行结果下面说说如何启动一个新的Ability在应用程序中。在项目入口目录右击New-->Ability-->PageAbility,如下图填写Ability的相关信息。目录结构如下图所示:startAbility方法有两种调用形式,一种是callback,一种是Promise,都需要传递StartAbilityParameter参数来设置目标Ability。startAbility(StartAbilityParameter,AsyncCallback
