鸿蒙开发应用程序入口UIAbility及实践

什么是UIAbility

是一种包含用户界面的应用组件,主要用于和用户进行交互。UIAbility也是系统调度的单元,为应用提供窗口在其中绘制界面

每一个UIAbility实例,都对应于一个最近任务列表中的任务,创建的Empty Ability模板工程会生成一个UIAbility文件

UIAbility的生命周期 

UIAbility生命周期主要分为四个部分Create、Foreground、Background、Destroy四个状态 WindowStageCreate和WindowStageDestroy为窗口管理器

  • Create状态,在UIAbility实例创建时触发,系统会调用onCreate回调。可以在onCreate回调中进行相关初始化操作
  • WindowStage为本地窗口管理器,用于管理窗口相关的内容,例如与界面相关的获焦/失焦、可见/不可见,可以在onWindowStageCreate回调中,设置UI页面加载、设置WindowStage的事件订阅,在onWindowStageCreate(windowStage)中通过loadContent接口设置应用要加载的页面
  • Foreground和Background状态,分别在UIAbility切换至前台或者切换至后台时触发,分别对应于onForeground回调和onBackground回调
  • 在UIAbility实例销毁之前,有onWindowStageDestroy回调,我们可以在该回调中释放UI页面资源
  • Destroy状态,在UIAbility销毁时触发。可以在onDestroy回调中进行系统资源的释放、数据的保存等操作

 UIAbility的启动模式

singleton(单实例模式)
singleton启动模式为单实例模式,也是默认情况下的启动模式每次调用startAbility()方法时,如果应用进程中该类型的UIAbility实例已经存在,则复用系统中的UIAbility实例。系统中只存在唯一一个该UIAbility实例,即在最近任务列表中只存在一个该类型的UIAbility实例

  • singleton启动模式的开发使用,在module.json5文件中的“launchType”字段配置为singleton即可

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

  • multiton启动模式的开发使用,在module.json5配置文件中的launchType字段配置为multiton即可

specified(指定实例模式)
specified启动模式为指定实例模式,针对一些特殊场景使用(例如文档应用中每次新建文档希望都能新建一个文档实例,重复打开一个已保存的文档希望打开的都是同一个文档实例)

  • specified启动模式的开发使用,在module.json5配置文件中的launchType字段配置为specified即可
{
   "module": {
     // ...
     "abilities": [
       {
         "launchType": "singleton",
         // multiton  specified
       }
     ]
  }
}

页面跳转 

在页面跳转中必须要引入路由模块

import router from '@ohos.router';

参数传递

router.pushUrl({
  url: 'pages/Second',
  params: {
    src: 'Index页面传来的数据',
  }
}, router.RouterMode.Single)

参数接收 

import router from '@ohos.router';

@Entry
@Component
struct Second {
  @State src: string = (router.getParams() as Record<string, string>)['src'];
  // 使用router.getParams()
  // ...
}

页面返回

返回上一个页面 

router.back();

返回指定页面

router.back({ url: 'pages/Index' });

UIAbility实践(官网案例)

项目官网gitee地址:官网Gitee地址

本地实现效果

注意层次结构与官网Gitee保持一致,要配置路由映射,具体本地实现请参考官网Gitee

  • 7
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值