page与abilityslice
page 模板(以下简称“page”)是 fa 唯一支持的模板,用于提供与用户交互的能力。一个 page 可以由一个或多个 abilityslice 构成,abilityslice 是指应用的单个页面及其控制逻辑的总和。
当一个 page 由多个 abilityslice 共同构成时,这些 abilityslice 页面提供的业务能力应具有高度相关性。例如,新闻浏览功能可以通过一个 page 来实现,其中包含了两个 abilityslice:一个 abilityslice 用于展示新闻列表,另一个 abilityslice 用于展示新闻详情。page 和 abilityslice 的关系如[图1]所示。
图1 page 与 abilityslice
相比于桌面场景,移动场景下应用之间的交互更为频繁。通常,单个应用专注于某个方面的能力开发,当它需要其他能力辅助时,会调用其他应用提供的能力。例如,外卖应用提供了联系商家的业务功能入口,当用户在使用该功能时,会跳转到通话应用的拨号页面。与此类似,harmonyos 支持不同 page 之间的跳转,并可以指定跳转到目标 page 中某个具体的 abilityslice。
16、鸿蒙os 基本概念-百家乐凯发k8
虽然一个 page 可以包含多个 abilityslice,但是 page 进入前台时界面默认只展示一个 abilityslice。默认展示的 abilityslice 是通过setmainroute()方法来指定的。如果需要更改默认展示的 abilityslice,可以通过addactionroute()方法为此 abilityslice 配置一条路由规则。此时,当其他 page 实例期望导航到此 abilityslice 时,可以在 intent 中指定action,详见 不同 page 间导航。
setmainroute() 方法与 addactionroute() 方法的使用示例如下:
public class myability extends ability { @override public void onstart(intent intent) { super.onstart(intent); // set the main route setmainroute(mainslice.class.getname()); // set the action route addactionroute("action.pay", payslice.class.getname()); addactionroute("action.scan", scanslice.class.getname()); }}
addactionroute() 方法中使用的动作命名,需要在应用配置文件(config.json)中注册:
{ "module": { "abilities": [ { "skills":[ { "actions":[ "action.pay", "action.scan" ] } ] ... } ] ... } ...}