HarmonyOS 5.0应用开发——UIAbility跳转

【高心星出品】

UIAbility跳转

UIAbility是系统调度的最小单元。在设备内的功能模块之间跳转时,会涉及到启动特定的UIAbility,包括应用内的其他UIAbility、或者其他应用的UIAbility(例如启动三方支付UIAbility)。

发起跳转

以下的案例将要实现:EntryAbility加载的index页面中文本,点击之后跳转到EntryAbility1加载的index1页面中。

可以在后台看到两个任务窗口。

index页面代码

typescript 复制代码
import { common, Want } from '@kit.AbilityKit';

@Entry
@Component
struct Index {
  @State message: string = 'Hello World';
  private context:common.UIAbilityContext=getContext(this) as common.UIAbilityContext
  build() {
    RelativeContainer() {
      Text(this.message)
        .id('HelloWorld')
        .fontSize(50)
        .fontWeight(FontWeight.Bold)
        .alignRules({
          center: { anchor: '__container__', align: VerticalAlign.Center },
          middle: { anchor: '__container__', align: HorizontalAlign.Center }
        })
        .onClick(()=>{
          let want:Want={
              // 包名
              bundleName:'com.gxx.uiabilitydemo',
              // ability名字
              abilityName:'EntryAbility1',
              // 携带参数
              parameters:{
                name:'gxx'
            }
          }
          // 启动跳转
          this.context.startAbility(want)
        })
    }
    .height('100%')
    .width('100%')
  }
}

Ability的启动模式

UIAbility的启动模式是指UIAbility实例在启动时的不同呈现状态。针对不同的业务场景,系统提供了三种启动模式:

  • singleton(单实例模式)
  • multiton(多实例模式)
  • specified(指定实例模式)

在这里我们只介绍前两种常用启动模式。

singleton启动模式

singleton启动模式为单实例模式,也是默认情况下的启动模式。

每次调用startAbility()方法时,如果应用进程中该类型的UIAbility实例已经存在,则复用系统中的UIAbility实例。系统中只存在唯一一个该UIAbility实例,即在最近任务列表中只存在一个该类型的UIAbility实例。

生命周期函数调用顺序:startAbility(EntryAbility)----》onNewWant()(EntryAbility1)不会执行oncrate。

需要在module.json5配置单例启动模式。

javascript 复制代码
{
  "module": {
    // ...
    "abilities": [
      {
        "launchType": "singleton",
        // ...
      }
    ]
  }
}
multiton启动模式

multiton启动模式为多实例模式,每次调用startAbility()方法时,都会在应用进程中创建一个新的该类型UIAbility实例。即在最近任务列表中可以看到有多个该类型的UIAbility实例。这种情况下可以将UIAbility配置为multiton(多实例模式)。

生命周期函数调用顺序:startAbility(EntryAbility)----》oncreate()(EntryAbility1)不会执行onNewWant()周期函数。

需要在module.json5配置多实例启动模式。

javascript 复制代码
{
  "module": {
    // ...
    "abilities": [
      {
        "launchType": "multiton",
        // ...
      }
    ]
  }
}
相关推荐
2501_9197490324 分钟前
分享一款实用的鸿蒙App,整体感觉不错
华为·harmonyos
贵州诚鑫致达科技有限公司28 分钟前
接入汇聚都是环怎么防环路?华为SEP加RRPP混合环
服务器·华为·php
三掌柜66629 分钟前
04|鸿蒙7·端侧AI实战:检索增强,把证据带进回答
人工智能·华为·harmonyos
心态还需努力呀29 分钟前
把 Zettlr 搬上鸿蒙 PC:墨匣学术写作编辑器移植与上架全记录
华为·编辑器·harmonyos
特立独行的猫a40 分钟前
AI时代的应用开发神器:cj-tauri 已支持鸿蒙 PC,第一次的踩坑记录
ui·harmonyos·tauri·仓颉·鸿蒙pc·cj-tauri
Industio_触觉智能9 小时前
用鸿蒙开发鸿蒙!DevEco三件套已支持鸿蒙PC|触觉智能鸿蒙南向嵌入式厂家
华为·harmonyos·鸿蒙·鸿蒙系统·开发板·openharmony·开源鸿蒙
fleaxin15 小时前
Atlas 300V:(3)模型精度数据对比
yolo·华为·atlas
威哥爱编程15 小时前
HarmonyOS 7 Agent 开发实战 08:结构化输出解析
agent·harmonyos
威哥爱编程15 小时前
HarmonyOS 7 Agent 开发实战 09:Agent 测试评测集
agent·harmonyos
Eyfcom20 小时前
〖深度〗鸿蒙 ArkTS 移动应用开发经验:从 TypeScript 心智模型到声明式运行时的六层认知重构
typescript·移动开发·harmonyos·arkts