HarmonyOS中Ability生命周期以及Intent意图跳转

本文介绍鸿蒙OS中Ability与AbilitySlice的生命周期及Intent的使用方法,涵盖Ability生命周期阶段、Intent的工作原理、Operation与Parameters详解,以及不同场景下的页面跳转案例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Ability

Page模板(以下简称“Page”)是FA唯一支持的模板,用于提供与用户交互的能力。一个Page可以由一个或多个AbilitySlice构成,AbilitySlice是指应用的单个页面及其控制逻辑的总和。当一个Page由多个AbilitySlice共同构成时,这些AbilitySlice页面提供的业务能力应具有高度相关性。

Ability生命周期

Ability一共有onStart、onActive、onInactive、onBackground、onForeground、onStop几个主要方法,从官网给出的生命周期思维导图就可以基本看出来他们之间的关系。
在这里插入图片描述
其中onStart()方法必须重写,因为要设置对应的AbilitySlice。
在这里插入图片描述

在这里插入图片描述

AbilitySlice

在HarmonyOS应用中,每一个Page是一个页面容器,每一个页面容器可以包含多个页面Ability而每一个Ability对应一个AbilitySlice;虽然Page是一个页面容器,会包含有多个页面,但是当Page进入前台时只会显示一个界面;而系统默认启动的页面就是程序的主页,通过setMainRoute()设置主路由的方法来来进行设置。

@Override
public void onStart(Intent intent) {
   
    super.onStart(intent);
    super.setMainRoute(MainAbilitySlice.class.getName());
}

通过setMainRoute方法可以设置在前台显示的一个页面,但是当一个前台需要显示多个多个页面的时候就需要使用到addActionRoute方法进行添加:

@Override
public void onStart(Intent intent) {
   
    super.onStart(intent);
    super.setMainRoute(MainAbilitySlice.class.getName());
    //action_java自己定义的action行为
    //JavaUiAbility.class.getName()  包名地址
    addActionRoute("action_java",JavaUiAbility.class.getName());
    addActionRoute("action_second",SecondAbility.class.getName());
}

添加了之后发现没有用,因为我们自己定义的action行为没有进行注册,要注册到config.json配置文件里面对应的Ability下,比如我们是在MainAbility里面操作的,那么MainAbility的skills下的actions就需要变成这个样子:

"actions": [
    "action.system.home",
     "action_java",
     "action_second"
]

Intent

Intent是对象之间传递信息的载体。例如,当一个Ability需要启动另一个Ability时,或者一个AbilitySlice需要导航到另一个AbilitySlice时,可以通过Intent指定启动的目标同时携带相关数据。Intent的构成元素包括Operation与Parameters。

通过intent的简介可以看到intent主要实现两个作用,1指定要跳转的目标,2携带参数跳转到目标。

Operation

通过Intent的Operation构建对象,实现跳转目标,指定设备标识,应用包名,Ability名称等参数后可以进行Ability之间的跳转ÿ

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值