鸿蒙开发-运行机制-Stage模型

系列文章目录

鸿蒙开发-序言

鸿蒙开发-工具

鸿蒙开发-初体验

鸿蒙开发-运行机制

文章目录

前言

一、Stage模型应用组件

1.UIAbility组件

1.1.UIAbility组件概述

1.2.UIAbility组件生命周期

1.3.UIAbility组件启动模式

1.4.UIAbility组件基本用法

1.5.UIAbility组件与UI数据同步

1.6.UIAbility组件间交互

总结


前言

上一篇文章,简单介绍了鸿蒙开发的软件运行机制以及Stage模型的基本概念,这篇继续学习Stage模型相关特性。


一、Stage模型应用组件

1.UIAbility组件

1.1.UIAbility组件概述

包含UI界面与用户交互的应用组件,系统调度的基本单元,为应用提供绘制界面窗口;一个UIAbility组件可以通过多个页面来实现一个功能模块;每一个UIAbility组件实例,都对应于一个最近任务列表中的任务。

UIAbility使用,需要在module.json5配置文件的abilities标签中声明UIAbility的名称、入口、标签等相关信息,前面文章我们创建的HelloWorld项目,默认生成的配置项:

鸿蒙开发-运行机制-Stage模型_第1张图片

项目中不是使用UIAbility组件,而是创建了一个EntryAbility继承自UIAbility,这里体现Stage模型面向对象的开发方式

鸿蒙开发-运行机制-Stage模型_第2张图片

1.2.UIAbility组件生命周期

应用中的UIAbility实例会在其生命周期的不同状态之间转换,不同状态切换是由用户打开、切换和返回操作触发。UIAbility类提供了一系列回调方法,当UIAbility实例的某个状态发生改变就触发回调方法调用。对于Vue开发比较熟悉的同学很好理解,类似Vue框架中钩子函数。

鸿蒙开发-运行机制-Stage模型_第3张图片鸿蒙开发-运行机制-Stage模型_第4张图片

各种状态说明如下:

鸿蒙开发-运行机制-Stage模型_第5张图片

1.3.UIAbility组件启动模式

鸿蒙开发-运行机制-Stage模型_第6张图片

注:我的理解,一个应用每调用一次startAbility()创建一个Ability实例,对应系统中的一个任务项。当我们把任务项划掉,可以理解为销毁对应Ability实例。单实例模式,同个应用只会存在一个Ability实例;多实例模式,同个应用会存在多个Ability实例;指定模式,是多实例模式的一种特殊情况。同一个应用从操作系统的角度理解,就对应一个进程。

1.4.UIAbility组件基本用法

指定启动页面 应用中的UIAbility在启动过程中,需要指定启动页面,否则应用启动后会因为没有默认加载页面而导致白屏。在onWindowStageCreate()生命周期回调中,通过loadContent方法设置启动页面

鸿蒙开发-运行机制-Stage模型_第7张图片

获取UIAbility上下文信息 通过UIAbilityContext可以获取UIAbility的相关配置信息,如包代码路径、Bundle名称、Ability名称和应用程序需要的环境状态等属性信息,以及可以获取操作UIAbility实例的方法(如startAbility()、connectServiceExtensionAbility()、terminateSelf()等)

  • 在UIAbility中可以通过this.context获取UIAbility实例的上下文信息。鸿蒙开发-运行机制-Stage模型_第8张图片

  • 在页面中Index.ets获取UIAbility实例的上下文信息。鸿蒙开发-运行机制-Stage模型_第9张图片

1.5.UIAbility组件与UI数据同步

使用EventHub进行数据通信 EventHub提供了UIAbility组件/ExtensionAbility组件级别的事件机制,以UIAbility组件/ExtensionAbility组件为中心提供了订阅、取消订阅和触发事件的数据通信能力。通信方式实现步骤:

step1:在UIAbility中调用eventHub.on()方法注册一个自定义事件“event1”

鸿蒙开发-运行机制-Stage模型_第10张图片

step2:在UI界面中通过eventHub.emit()方法触发该事件,在触发事件的同时,根据需要传入参数信息

鸿蒙开发-运行机制-Stage模型_第11张图片

step3:时间使用完成后,可以根据需要调用eventHub.off()方法取消该事件的订阅

使用globalThis进行数据同步 globalThis是ArkTS引擎实例内部的一个全局对象,引擎内部的UIAbility/ExtensionAbility/Page都可以使用,因此可以使用globalThis全局对象进行数据同步

鸿蒙开发-运行机制-Stage模型_第12张图片

1.6.UIAbility组件间交互

待续。。。


总结

本文记录UIAbility组件的相关概念以及知识点,内容偏理论,看起来枯燥乏味,就是良药苦口见效慢,但是能从根上解决问题。同样对于UIAbility组件的理解对我们从事鸿蒙开发有非常大的好处,能更好的理解鸿蒙应用的运行机制。

今天就记录这么多吧!聊聊我们“遥遥领先“的资本市场吧,今天的A股硬气了一把,今天晚上我在老婆面前也可以硬气一把。太不容易了,吃了一年的面,今天总算改善了点伙食。这算是跌透了吗?跌无可跌了吗?不知道,曾经的自信心被打击的荡然无存。现在像个过街老鼠一样,惶惶不可终日。不管后面的行情能不能向今天这样持续下去,我依然坚守,可能套太多了,自己安慰自己吧。

你可能感兴趣的:(鸿蒙开发,harmonyos,华为)