Page Ability基本概念

Page与AbilitySlice

Page模板(以下简称“Page”)是FA唯一支持的模板,用于提供与用户交互的能力。一个Page可以由一个或多个AbilitySlice构成,AbilitySlice是指应用的单个页面及其控制逻辑的总和。

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

图1 Page与AbilitySlice img

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

AbilitySlice路由配置

虽然一个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"                        ]                    }                ]                ...            }        ]        ...    }    ...}

results matching ""

    No results matching ""