之前我们说过 Stage 在运行过程中会创建一个舞台 UIAbility
那么 我们就来说说 UIAbility 它的一个生命周期

接下来 我们以 微信这个app应用来分析
要提前说明的是 目前来讲 微信并没harmonyos的一个版本
所以我们只是根据逻辑 说明情况可以触发或使用什么 其实它本身可能并不是这样的 比较开发系统都不一样
只是那它做个比喻

比如 我们现在点击微信应用 那么 它马上就会被启动起来
在这里插入图片描述
那么 它启动以后 如果它采用的 Stage模型
那么 它中间 会发生一些列的事情

首先 它肯定需要一个舞台给我们准备好
舞台准备好 就要创建 UIAbility
打开 第一件事 就是 执行 Create 去创建 要表演的UIAbility 入口图标
舞台创建好 并不代表 我们就能看见它了

目前 我们的 UIAbility 还处在幕后
然后 让它到 Foreground 前台来运行

到这一步 我们才能看见整个应用的界面
在这里插入图片描述
那么 可以看到应用后 我们就可以去点击主页面的各个菜单和功能了
那么 当我们 点击这些菜单或功能时 会发生什么呢?
首先 UIAbility 有很多种 其中 我们第一个打开的肯定是 Entry Ability
这是我们整个程序的入口
这个模块 还有一个作用 就是包含我们整个应用的核心功能
就比如 我们微信的 聊天 社交 就是它的核心功能

所以 我们打开微信这个应用时 它首次绘制的这个界面 就包含了这些 聊天 社交等核心功能的入口
比如 我们点击进入聊天 因为聊天 已经在这个 Ability中了 它只需要在这个 UIAbility 上去绘制页面就可以了
但还有一些拓展的功能
像我们视频号这些
它不属于核心功能
在这里插入图片描述
那么 像这些功能 显然就不应该放在微信应用的 Entry Ability 模块中
因为这些不是每个人都一定需要的
它就需要有自己独立的 Ability

当我们点击它们的菜单时 也会切入到这些对应的界面中去
比如 我们点击视频号 那么就会切入到视频号界面中
在这里插入图片描述
看着好像和聊天功能一样 跳转了一个界面
但其实 它是又创建了一个新的 Ability

怎么证明呢
你可以打开微信 然后打开视频号 切到任务管理 你会发现 它们是两个不同的任务
在这里插入图片描述
简单说 在任务列表中 每一个任务都代表一个独立的 Ability

就是 你去点击一个 Ability 它会先检查 如果有就重新在当前Ability渲染界面
如果没有 就还是走那个流程
先 Create 创建一个Ability
然后 让它到前台 Foreground
然后 那我们原来的Ability 就要去后台 Background
因为 舞台只有一个 只能运行一个主任务

当然 也可以手动切换 从Background切到Foreground 反正 前台后台应用都可以通过任务管理去切换

然后 像我们玩烦了 直接向上一拖 或者 按一下下面的垃圾桶 直接全部清楚调 就是执行了 Destroy

这就是 它整体的一个生命周期
Create 创建Ability
第一次打开 或者手动移入前台 就是进入前台 Foreground
进入后台 Background
销毁 Destroy
在这里插入图片描述

Logo

讨论HarmonyOS开发技术,专注于API与组件、DevEco Studio、测试、元服务和应用上架分发等。

更多推荐