鸿蒙开发者的黄金时代
有了AI加持,可以说是鸿蒙开发者的黄金时代来临了
最近下载了最新的 DevEco Studio 26.0.0 Release,同时利用其自带的node用管理员身份安装了code和cli
npm install -g @deveco/deveco-code
npm install -g @deveco/deveco-cli
新建了一个项目,还没有做自己的项目,自动生成的Hello World样例项目。让AI给解读了一下,对于新手,真的是非常友好了,知识的获取上升了一个大大的台阶。

01 Index.ets
解读此文件 然后@添加上下文,即添加项目中的index.ets文件
entry\src\main\ets\pages\Index.ets是一个 HarmonyOS ArkTS 页面组件,是应用的入口页面。以下是逐段解析:
1. 装饰器声明(第 1-2 行)
@Entry
@Component
struct Index {
| 装饰器 | 作用 |
|---|---|
@Entry |
标记此组件为页面入口,即应用的首页/根组件 |
@Component |
声明这是一个 ArkUI 自定义组件 |
struct Index 是组件名,HarmonyOS 中组件使用 struct 而非 class 定义。
2. 状态管理(第 4 行)
@State message: string = 'Hello World';
@State:响应式状态变量。当message的值发生变化时,UI 会自动重新渲染。- 初始值为
'Hello World'。
3. UI 构建(第 6-22 行)
build() 是 ArkUI 组件的必须方法,用于声明 UI 结构:
RelativeContainer (相对布局容器)
└── Text (文本组件)
├── .id('HelloWorld') → 组件唯一标识
├── .fontSize($r(...)) → 字体大小引用资源
├── .fontWeight(Bold) → 粗体
├── .alignRules(...) → 居中对齐规则
└── .onClick(...) → 点击事件
关键细节:
-
RelativeContainer(第 7 行):相对布局容器,子组件通过锚点规则定位。容器本身设置了height('100%')和width('100%'),即撑满整个屏幕。 -
Text(this.message)(第 8 行):显示状态变量message的文本内容。 -
.fontSize($r('app.float.page_text_font_size'))(第 10 行):使用 资源引用$r()从资源文件中读取字体大小,而非硬编码。这便于多语言/多设备适配。 -
.alignRules({...})(第 12-15 行):在RelativeContainer中的对齐规则:center→ 垂直方向居中(锚点为容器本身__container__)middle→ 水平方向居中- 效果:文本在屏幕正中央显示
-
.onClick()(第 16-18 行):点击文本时,将message从'Hello World'改为'Welcome'。由于@State的响应式特性,UI 会自动更新显示新文本。
4. 运行时行为总结
应用启动
→ 显示 "Hello World"(居中、粗体)
→ 用户点击文本
→ 文本变为 "Welcome"(自动刷新 UI)
5. 架构特点
| 特性 | 说明 |
|---|---|
| 声明式 UI | 使用 build() 声明 UI 结构,非命令式编程 |
| 响应式状态 | @State 驱动 UI 自动更新 |
| 资源化配置 | 字体大小通过 $r() 引用资源,支持多设备适配 |
| 相对布局 | 使用 RelativeContainer + alignRules 实现居中 |
这是 HarmonyOS DevEco Studio 生成的默认模板入口页面,结构简洁,展示了 ArkUI 的核心范式:声明式 UI + 响应式状态驱动。
02 EntryAbility.ets
继续另外一个文件
tool: builtin_read_file
result: ["entry\\src\\main\\ets\\entryability\\EntryAbility.ets"]
EntryAbility.ets是应用的 Ability 生命周期管理类,是 HarmonyOS 应用的核心入口之一,负责管理应用的生命周期、窗口加载和配置。以下是逐段解析:
1. 导入声明(第 1-3 行)
import { AbilityConstant, ConfigurationConstant, UIAbility, Want } from '@kit.AbilityKit';
import { hilog } from '@kit.PerformanceAnalysisKit';
import { window } from '@kit.ArkUI';
| 导入项 | 来源 Kit | 用途 |
|---|---|---|
UIAbility |
@kit.AbilityKit |
Ability 基类,提供生命周期回调 |
Want |
@kit.AbilityKit |
启动参数载体,传递跨组件/跨应用数据 |
AbilityConstant |
@kit.AbilityKit |
启动模式等常量定义 |
ConfigurationConstant |
@kit.AbilityKit |
配置常量(如颜色模式) |
hilog |
@kit.PerformanceAnalysisKit |
统一日志工具,用于性能分析和调试 |
window |
@kit.ArkUI |
窗口管理模块 |
2. 日志域常量(第 5 行)
const DOMAIN = 0x0000;
hilog 要求一个十六进制 日志域标识(0x0000~0xFFFF),用于过滤和分类日志输出。此处使用默认值 0x0000。
3. 类定义(第 7 行)
export default class EntryAbility extends UIAbility {
- 继承
UIAbility,获得完整的 UI Ability 生命周期回调。 export default:作为模块默认导出,供module.json5中配置引用。
4. 生命周期回调(6 个阶段)
HarmonyOS UIAbility 生命周期如下:
应用启动
│
├─→ onCreate() Ability 创建(非UI)
│ └─ 日志: "Ability onCreate"
│
├─→ onWindowStageCreate() 窗口创建(加载UI)
│ └─ 加载页面 pages/Index
│ └─ 设置颜色模式
│
├─→ onForeground() 切到前台
│ └─ 日志: "Ability onForeground"
│
├─→ onBackground() 切到后台
│ └─ 日志: "Ability onBackground"
│
├─→ onWindowStageDestroy() 窗口销毁
│ └─ 日志: "Ability onWindowStageDestroy"
│
└─→ onDestroy() Ability 销毁
└─ 日志: "Ability onDestroy"
4.1 onCreate(第 8-10 行)
onCreate(want: Want, launchParam: AbilityConstant.LaunchParam): void
- 时机:Ability 实例创建时调用(早于窗口创建)。
- 参数:
want:启动意图,可携带来自其他 Ability/应用传递的参数。launchParam:启动模式参数(如DISTRIBUTED、STANDARD等)。
- 当前行为:仅打印日志。
4.2 onDestroy(第 12-14 行)
- 时机:Ability 被销毁时调用,用于释放资源。
- 当前行为:仅打印日志。
4.3 onWindowStageCreate(第 16-33 行)⭐ 核心方法
onWindowStageCreate(windowStage: window.WindowStage): void
- 时机:窗口舞台创建时调用,这是加载 UI 页面的关键时机。
操作一:加载入口页面(第 20-26 行)
windowStage.loadContent('pages/Index', (err) => { ... });
- 将
pages/Index(即前面分析的Index.ets)加载到窗口中。 - 回调中检查
err.code:失败则打印错误日志并return,成功则打印确认日志。
操作二:设置颜色模式(第 28-32 行)
this.context.getApplicationContext().setColorMode(
ConfigurationConstant.ColorMode.COLOR_MODE_NOT_SET
);
COLOR_MODE_NOT_SET:不强制设置颜色模式,跟随系统设置(浅色/深色/自动)。- 使用
try-catch包裹,防止设置失败导致崩溃。
4.4 onWindowStageDestroy(第 35-38 行)
- 时机:窗口舞台销毁时调用,用于释放 UI 相关资源。
- 当前行为:仅打印日志。
4.5 onForeground(第 40-43 行)
- 时机:Ability 从后台切换到前台(用户重新可见应用)。
- 当前行为:仅打印日志。
4.6 onBackground(第 45-48 行)
- 时机:Ability 从前台切换到后台(如用户按 Home 键、切换到其他应用)。
- 当前行为:仅打印日志。
5. 完整生命周期流转图
┌──────────────────────────────────────────────────┐
│ UIAbility 生命周期 │
│ │
│ onCreate ──→ onWindowStageCreate ──→ onForeground │
│ │ │ │
│ │ loadContent │ (前台运行)│
│ │ ('pages/Index') │ │
│ │ ↓ │
│ │ onBackground │
│ │ │ │
│ │ onForeground ←───┘ (可往返切换)
│ │ │ │
│ ↓ ↓ │
│ onWindowStageDestroy ←──────────────── │
│ │ │
│ ↓ │
│ onDestroy │
└──────────────────────────────────────────────────┘
6. 架构特点总结
| 特性 | 说明 |
|---|---|
| 标准模板 | DevEco Studio 生成的默认 EntryAbility,未做业务定制 |
| 日志驱动 | 所有生命周期回调均通过 hilog 输出日志,便于调试追踪 |
| 页面加载 | onWindowStageCreate 中加载 pages/Index 作为入口页 |
| 颜色模式 | 设为 COLOR_MODE_NOT_SET,跟随系统深浅色设置 |
| 错误处理 | loadContent 回调 + setColorMode 的 try-catch,保证健壮性 |
| 生命周期完整 | 实现了全部 6 个回调,覆盖创建→前台→后台→销毁全流程 |
此文件是 HarmonyOS 应用的 Ability 层入口,与 Index.ets(UI 层入口)配合,共同构成应用启动的完整链路:EntryAbility.onCreate → onWindowStageCreate → loadContent('pages/Index') → Index.build()。
- 点赞
- 收藏
- 关注作者
评论(0)