购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

5.3 Page Ability

正如前文所讲,Page Ability代表应用的表示层的功能,用于提供与用户交互的能力。

5.3.1 Page Ability的基本概念

Page模板(以下简称Page)是FA中目前来说唯一支持的模板。

一个Page可以由一个或多个AbilitySlice构成,AbilitySlice是指应用的单个页面及其控制逻辑的总和。

在HelloWorld应用中,MainAbility类就是一个Page。其代码如下:

在HelloWorld应用中,MainAbility这个Page是由一个AbilitySlice构成的,这个AbilitySlice就是MainAbilitySlice类,代码如下:

5.3.2 多个AbilitySlice构成一个Page

当一个Page由多个AbilitySlice共同构成时,这些AbilitySlice页面提供的业务能力应具有高度相关性。例如,新闻浏览功能可以通过一个Page来实现,其中包含两个AbilitySlice:一个AbilitySlice用于展示新闻列表,另一个AbilitySlice用于展示新闻详情。Page和AbilitySlice的关系如图5-3所示。

图5-3 Page和AbilitySlice的关系

相比于桌面场景,移动场景下应用之间的交互更为频繁。通常,单个应用专注于某个方面的能力开发,当它需要其他能力辅助时,会调用其他应用提供的能力。例如,快递应用提供了联系快递员的业务功能入口,当用户在使用该功能时,会跳转到通话应用的拨号页面。与此类似,HarmonyOS支持不同Page之间的跳转,并可以指定跳转到目标Page中某个具体的AbilitySlice。

5.3.3 AbilitySlice路由配置

虽然一个Page可以包含多个AbilitySlice,但是Page进入前台时界面默认只能展示一个AbilitySlice。默认展示的AbilitySlice是通过setMainRoute()方法来指定的。

比如在HelloWorld应用中,MainAbility类就指定了MainAbilitySlice类作为默认展示的AbilitySlice。其代码如下:

如果需要更改默认展示的AbilitySlice,可以通过addActionRoute()方法为此AbilitySlice配置一条路由规则。setMainRoute()方法与addActionRoute()方法的使用示例如下:

下一节将完整展示如何实现AbilitySlice的路由和导航。

5.3.4 不同Page间的导航

不同Page中的AbilitySlice相互不可见,因此无法通过present()或presentForResult()方法直接导航到其他Page的AbilitySlice。

AbilitySlice作为Page的内部单元,以Action的形式对外暴露,因此可以通过配置Intent的Action导航到目标AbilitySlice。Page间的导航可以使用startAbility()或startAbilityForResult()方法,获得返回结果的回调为onAbilityResult()。在Ability中调用setResult()可以设置返回结果。详细用法可参考5.12节中的示例。 Iv8BEYTQZHAl73YrU/oAGqk9ARUJrEMKgsqcI10RjaN6jF4Y5BPsj46AKvgqswEE

点击中间区域
呼出菜单
上一章
目录
下一章
×