当前位置:   article > 正文

鸿蒙开发应用程序入口UIAbility及实践_鸿蒙uiability启动模式

鸿蒙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即可
  1. {
  2. "module": {
  3. // ...
  4. "abilities": [
  5. {
  6. "launchType": "singleton",
  7. // multiton specified
  8. }
  9. ]
  10. }
  11. }

页面跳转 

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

import router from '@ohos.router';

参数传递

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

参数接收 

  1. import router from '@ohos.router';
  2. @Entry
  3. @Component
  4. struct Second {
  5. @State src: string = (router.getParams() as Record<string, string>)['src'];
  6. // 使用router.getParams()
  7. // ...
  8. }

页面返回

返回上一个页面 

router.back();

返回指定页面

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

UIAbility实践(官网案例)

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

本地实现效果

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

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/我家自动化/article/detail/148879
推荐阅读
相关标签
  

闽ICP备14008679号